草庐IT

Hibernate

全部标签

java - Hibernate OneToOne自动join抓取(解决n+1问题)

Hibernate3.3有一个n+1选择问题。为了简单起见,我将只做一个简短的抽象示例。假设我们有以下简单类:classMainEntity{@IdpublicLongid;//wehaveatablegeneratorcreatethisid@OneToOne(mappedBy="main")publicSubEntitysubEntity;}classSubEntity{@Id@Column(name="mainId")//notethatthisisthesamecolumnasthejoincolumnbelowpublicLongmainId;//inordertohavet

java - Hibernate NOT IN 联结表上的子查询

我正在尝试在hibernate状态下执行查询,如下面的sql查询:SELECTphone.*FROMphoneWHEREphone.idNOTIN(SELECTphone_idFROMuser_phone)我有以下实体类:@EntityclassUser{@IdprivateIntegerid;@ManyToManyprivateSetphoneList;}和Phone类:@EntityclassPhone{@IdprivateIntegerid;privateStringdescription;}Hibernate自动创建一个名为user_phone的联结表。现在我想选择所有未被任何

java - 在使用 hibernate 映射的表中添加列,而不会丢失现有数据

我有一个名为Person的表,我已经将其映射到hibernate状态中,我已经有一些我不想丢失的数据。我需要添加名为地址的新列,知道如何在hibernate中执行此操作吗?提前致谢.. 最佳答案 如果您当前的表是由Hibernate生成的,您可以简单地在address列的java实体类中添加address属性。然后设置hibernate.hbm2ddl.auto属性为update,hibernate会在下次构建SessionFactory时自动创建这一列。当hibernate.hbm2ddl.auto为update时,Hiberna

java - H2 设置默认时区

如何设置H2数据库的时区?我正在使用Hibernate创建数据库。 最佳答案 编辑:我发现我的回答可能不正确,至少会产生误导。我试图删除它,但显​​然这是不可能的。请参阅:Howtostoredate/timeandtimestampsinUTCtimezonewithJPAandHibernate 关于java-H2设置默认时区,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1

java - 在读取操作中使用 Hibernate 的 StaleObjectStateException?

我在SpringDefaultMessageLisenerContainer的监听器中使用Hibernate。当我让监听器以多线程运行时,我经常遇到这种只读操作的StaleStateException:Queryq=session.createQuery("SELECTkFROMKeywordkWHEREk.name=:name").setParameter("name",keywordName);Listkws=q.list()在q.list()处抛出异常:optimisticlockingfailed;nestedexceptionisorg.hibernate.StaleObje

java - 在 Hibernate 中使用 transient 实体更新/合并现有的持久对象

我在我的数据库中处理一个相当复杂的对象图。我正在使用XStream序列化和反序列化这个工作正常的对象图。当我导入数据库中存在的对象的对象图时,它最初是transient的,因为没有ID并且hibernate对此一无所知。然后我有业务逻辑,通过确定新transient导入对象中的哪些对象映射到现有持久对象,在我的对象图的部分设置ID。然后我使用Hibernate的merge()和saveOrUpdate()。一些伪代码可以让您更好地了解我在做什么:ComplexObjecttransObj=xstream.import("object.xml");ComplexObjectpersist

java - JPA 集合在映射表中有不需要的唯一约束

当我使用hibernate.hbm2ddl.auto=create自动生成我的数据库时,在映射表中创建了一个“不需要的”唯一约束。我正在运行postgres9.1,创建表语句变为:CREATETABLEschemaname.scanalerts(scanidbigintNOTNULL,alerts_idbigintNOTNULL,CONSTRAINTfkd65bd7541b5b1a8eFOREIGNKEY(scanid)REFERENCESrfid.scan(id)MATCHSIMPLEONUPDATENOACTIONONDELETENOACTION,CONSTRAINTfkd65bd

java - 将没有主键的 SQL View 映射到 JPA 实体

在我的Java应用程序中,我想使用JPA获取存储在我的Oracle数据库中的信息。在我的数据库中,我有一个View,其中包含一组从其他一些表中获得的列。我想映射那个View。但是,我的View没有主键,因此我无法创建JPA实体。我考虑过使用2列作为外键。实现它的最佳方式是什么?我见过很多不同的方法,我无法决定哪种方法最适合这种情况。 最佳答案 解决此问题的一种方法是通过将@Id注释添加到适当的字段来使用复合主键。 关于java-将没有主键的SQLView映射到JPA实体,我们在Stack

java - getHibernateTemplate().flush() 和 getSession().flush() 有什么区别

我正在使用Hibernate3.2.6。我正面临异常(exception)情况savethetransientinstancebeforeflushing在我的代码中,有时我们在一个事务中使用getSession().flush(),有时我们使用getHibernateTemplate().flush()。你能告诉我这两者有什么区别吗? 最佳答案 HibernateTemplate是不推荐使用的Spring代码,从Spring移动到注释作为事务管理的首选方法之前的日子。它不是Hibernate本身的一部分。模板代码抽象出创建、提交和

java - 使用 Hibernate/JPA 和 JDK Date 的不需要的自动时区转换

我使用Hibernate(4.2)作为我的持久性提供者,并且我有一个包含Date字段的JPA实体:@Entity@Table(name="MY_TABLE")publicclassMyTableimplementsSerializable{...@Temporal(TemporalType.TIMESTAMP)@Column(name="START_DATE")privateDatestartDate;publicDategetStartDate(){returnstartDate;}publicvoidsetStartDate(DatestartDate){this.startDat