草庐IT

hibernate-batch-updates

全部标签

java - hibernate 非法尝试将集合与两个打开的 session 相关联

我在学校项目中使用持久性,当我尝试删除和更新对象时遇到问题,所有其他查询都有效。异常(exception)是:Illegalattempttoassociateacollectionwithtwoopensessions我关闭我打开的每个session。HibernateUtils代码publicclassHibernate{protectedstaticfinalSessionFactorysessionFactory;privateSessionsession;static{try{//CreatetheSessionFactoryfromhibernate.cfg.xmlsess

java - 我可以将构建器设计模式与 hibernate 一起使用吗?

假设我有这个类:publicclassMyEntity{privateintid;privateStringname;privateMyEntity(intid,Stringname){this.id=id;this.name=name;}publicstaticclassMyEntityBuilder{privateintid;privateStringname;privateMyEntityBuildersetId(intid){this.id=id;}privateMyEntityBuildersetName(Stringname){this.name=name;}private

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 - 在读取操作中使用 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 - 使用 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

java - 防止 Hibernate session 刷新/存储无效的脏实体

我想知道采取哪种方法来防止Hibernate4.3.4(使用Spring和HibernateVaidator)刷新脏实体。在我的代码中,我使用HibernateValidator的手动实现(实例本身中的.validate()方法),它在保存实体之前被调用。validate()方法返回错误列表(如果发现任何错误),否则调用Session.update()来存储实体,然后提交事务。这可行,但是当实例本身被操作时(在实体中设置发布/请求参数)实体和相应的Hibernatesession被标记为“脏”并且实体与下一个Session.flush()一起存储。在我的例子中,我想明确控制可能存储的实

java - 如何让 Hibernate Validator 在第一个字段违规时停止验证?

我有一个bean,我在其中为每个字段定义了多个验证注释,例如@NotEmpty@Pattern(regexp="(\\-?\\d)+")@Min(value=1)StringmyField;我遇到了两个一个我无法用任何简单方法解决的问题。每个字段的指定注释的验证顺序是随机的,即不会按照注释定义的顺序发生。我相信@GroupSequence不会有帮助,因为它只定义组验证序列,而不是注释序列。正如@Tom正确评论的那样,违规被报告为Set,这意味着注释的执行顺序与报告的违规之间没有1:1的映射。我只想使每个字段的一个规则无效,即如果它不匹配模式,请不要尝试检查该值是否>=1。目前,如果将m