我使用hibernate和视图(注释@Subselect和@Synchronize)和过滤器。问题是hibernate封装查询(由@Subselect注释的“value”属性定义),性能变得非常慢。
例如,如果我编写自己的SQL查询(执行不超过100 is ),则如下所示:
SELECT id,
country_id,
firstName,
lastName
FROM client
WHERE client.country_id IN (2564,2558,1452,3652)
但是,如果我使用hibernate和过滤器,生成的查询将是:
SELECT
我使用Spring Data @Query注解从数据库中选择一些值。查询如下所示(简化)
@Query("from #{#entityName} where :myParam is null or someAttribute not in :myParam")
这应该会创建等效的myParam,如果SQL值为null,它将返回表中的所有记录,但是hibernate会像这样创建where子句
... where :myParam = null or ...
它不会返回任何内容。
我正在使用Microsoft SQL Server 2017 (RTM)。Hibernate配置如下:
在Hibernate < 5.2版本中,可以使用通用SQL查询,如
String sql = "select a, b, sum (c) csum from a group by a, b";
SQLQuery q = session.createSqlQuery (sql);
q
.addScalar ("a", IntegerType.INSTANCE)
.addScalar ("b", IntegerType.INSTANCE)
.addScalar ("csum", IntegerType.I
我目前正在学习如何使用Hibernate将对象存储在数据库中。我在上读了一篇教程,并试图为一个非常简单的类和表创建一个XML文件。然而,我完全无法让它开始工作,我现在真的很沮丧。我就是没法让它起作用。
数据库是Postgres 9.2,类是我自己编写的,Hibernate的版本是Netbeans 7.3附带的版本(我相信是3.2)。
下表如下:
CREATE TABLE sellable.manufacturers
(
mfr_id serial NOT NULL, -- Manufacturer ID
mfr_name character varying(127) NOT NULL,
我对Hibernate比较陌生,在我的hibernate类上添加一个“独特的”限制时,我遇到了一个问题。
@Entity
public class TaggedOffer {
private Long tagged_offers_id;
private String brand;
private Long cid;
private Date created_date;
//Getter and Setter and more fields
}
之前,我们创建一个hibernate查询,如下所示:
public DetachedCriteria build(fina
JPA的抓取策略控制到底是什么?我看不出渴望和懒惰之间有什么区别。在这两种情况下,JPA/Hibernate不会自动连接多对一关系。
人只有一个地址。一个地址可以属于许多人。JPA注释的实体类如下所示:
@Entity
public class Person {
@Id
public Integer id;
public String name;
@ManyToOne(fetch=FetchType.LAZY or EAGER)
public Address address;
}
@Entity
public class Address {
有两个实体:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
}
@Entity
public class Man extends Person {
...
}
试图执行以下方法:
@Test
public void clear(EntityManager
我想从数据库中检索一个实体的属性列表,但我得到了以下异常:
org.hibernate.PropertyNotFoundException: no appropriate constructor in class MapClass
我的整体:
public class Entity{
//properties
@OneToMany(mappedBy = "user", cascade={CascadeType.ALL})
private List<Profile> profiles = new LinkedList<Profile
我有一个数据访问类,它公开了网站上使用的实体类的基本操作:
public class UserDataAccessService {
public User login(User u)...
public User findByUsername(String username)...
我想在这个数据访问类中定义所有HQL/SQL查询,但是在使用hibernate @NamedQuery注释时遇到了问题;Hibernate一直说它找不到命名查询。我不打算在实体类中定义查找/查找方法,因为我觉得它不是合适的位置。
我只使用了注解和hibernate.cfg.xml,那么我可以在哪里声
我试图在Spring应用程序中从application.properties中获得一个值。
类是用标记@组件定义的,我也尝试过@Service,并且使用@PropertySource("classpath:application.properties"),没有@PropertySource,但是无论如何,它们都得到了值。
@Component
@PropertySource("application.properties")
public class TerraformOutput implements IPatternOutput {
我有一个用于所有Hibernate逻辑的中心类(大部分内容都不是我写的)。让我们称它为HibCentral。
我的代码使用这个类从SQL字符串创建查询:
public class HibCentral {
...some hibernate setup and other methods...
@Transactional
public Query createSQLQuery(final String sql) {
return getCurrentSession().createSQLQuery(sql);
}
}
getCurrentS
inherience在实体中是如何工作的?我是说比如说
public class Animal {
private String name;
//Getters and setters
}
@Entity
public class Dog extends Animal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
}
但是hibernate只在数据库中使用id创建表,为什么?
我正在使用带有Hibernate的JPA2.0。
例如,我为下表设置了JPA实体:
User [userId, userName, userAddress]
我可以使用find()方法获取用户实体:
User user = entityManager.find(User.class , 1L); // 1L is user id
现在,如果我在上面获取的同一用户实体上更改了任何用户的状态(比如userName):
user.setUserName("Narendra");
并使用merge()方法执行合并:
entityManager.merge(user);
合并成功,合并时
我正在尝试使用spring的spring.jpa.properties.hibernate.default_schema属性在运行时获取db架构名称,但它没有解析运行时的{h- schema }。
DemoApplication.java
public class DemoApplication
{
public static void main(String[] args)
{
ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
T