Questions tagged «hibernate»

Hibernate是一种Java语言的对象关系映射(ORM)库,使开发人员能够以远远超出对象/关系映射的方式在其应用程序中使用POJO风格的域模型。

5
休眠条件:没有映射关联的联接表
我想使用Hibernate的条件api来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,拥有者拥有很多宠物,但是至关重要的是,该关联未映射到Java批注或xml中。 使用hql,我可以通过在查询中指定联接来选择拥有“ fido”宠物的主人(而不是将一组宠物添加到owner类)。 是否可以使用休眠条件进行相同操作?如果可以,怎么办? 谢谢,J
71 java  hibernate  hql  criteria 

5
Hibernate Criteria vs HQL:哪个更快?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 1年前关闭。 改善这个问题 我一直在阅读一些答案,但我仍然感到困惑。为什么?因为您提到的差异与性能无关。它们易于使用。(Objetc(条件)和SQL(hql))。但是由于某些原因,我想知道“条件”是否比hql慢。 我在另一个答案中读到了 “ HQL和criteriaQuery在性能方面有所不同,每次您使用criteriaQuery触发查询时,它都会为表名创建一个新别名,该别名不会反映在任何数据库的上次查询缓存中。这导致了开销编译生成的SQL,需要更多时间来执行。” 由Varun Mehta提供。 这是非常接近但!我在另一个网站(http://gary-rowe.com/agilestack/tag/hibernate/)上阅读过Hibernate 3.3及更高版本不再是这种情况(请阅读:9)Hibernate运行缓慢,因为Criteria接口不一致) 我已经做了一些测试,试图找出差异,但是两者都会生成qry,并且不会更改表的别名。 我很困惑 如果有人知道主要原因,请您能帮助我们。谢谢

3
何时在NHibernate / Hibernate OneToMany关系上使用inverse = false?
我一直试图了解Hibernate的inverse属性,但这似乎只是概念上困难的事情之一。 我得到的要点是,当您拥有一个使用一对多映射的Child对象集合的父实体(例如Parent)时,在映射上设置inverse = true会告诉Hibernate'另一面(子)有责任自行更新以维护其表中的外键引用。 在将Children添加到代码中的集合中,然后保存Parent(设置了cascade-all)时,这样做似乎有两个好处:您可以在数据库上保存不必要的命中(因为没有设置逆设置,Hibernate认为这样)有两个地方可以更新FK关系),并且根据官方文档: 如果关联的列声明为NOT NULL,则NHibernate在创建或更新关联时可能会导致约束冲突。为防止出现此问题,必须使用双向关联,将多个值端(集合或包)标记为inverse =“ true”。 到目前为止,这一切似乎都有意义。我不明白是这样的:你什么时候会不希望使用逆=真正在一个一对多的关系?

2
休眠:一对一延迟加载,可选= false
我遇到了一个问题,即一对一的延迟加载在休眠状态下不起作用。我已经解决了它,但是仍然无法正确理解会发生什么。 我的代码(延迟加载在这里不起作用,当我拉人时-地址也被获取): @Entity public class Person{ @Id @SequenceGenerator(name = "person_sequence", sequenceName = "sq_person") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_sequence") @Column(name = "id") private long personID; @OneToOne(mappedBy="person", cascade=CascadeType.ALL, fetch = FetchType.LAZY) private Adress address; //.. getters, setters } @Entity public class Address { @Id @Column(name="id", unique=true, nullable=false) @GeneratedValue(generator="gen") @GenericGenerator(name="gen", strategy="foreign", parameters=@Parameter(name="property", …

4
休眠错误:此类的ID必须在调用save()之前手动分配:
由以下原因引起:org.springframework.orm.hibernate3.HibernateSystemException:此类的ID必须在调用save()之前手动分配:com.rfid.model.Role; 嵌套的异常是org.hibernate.id.IdentifierGenerationException:此类的ID必须在调用save()之前手动分配:com.rfid.model.Role 在org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676) 在org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) 在org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424) 在org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) 在org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:748) 在com.wfos.engine.wrapper.domain.impl.WrapperImpl.save(WrapperImpl.java:159) ...更多47 由以下原因引起:org.hibernate.id.IdentifierGenerationException:此类的id必须在调用save()之前手动分配:com.rfid.model.Role 在org.hibernate.id.Assigned.generate(Assigned.java:53) 在org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121) 在org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) 在org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) 在org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117) 在org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) 在org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685) 在org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677) 在org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:673) 在org.springframework.orm.hibernate3.HibernateTemplate $ 16.doInHibernate(HibernateTemplate.java:751) 在org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419) ...另外50 WARN [21:14:21](CommonsLoggingOutput.java:59):--错误:batchId [1]消息[java.lang.reflect.UndeclaredThrowableException] 我的课是这样的: @Entity @javax.persistence.Table(name="Role") @Table(appliesTo = "Role") public class Role { @Id @Column(name="U_id") public String U_id; public String U_pwd; public String U_account; public String …


2
为什么不建议使用HibernateDaoSupport?
我最近一直在使用Hibernate 3.5和Spring 3做一些工作,但是我对Hibernate还是很陌生,并认为HibernateDaoSupportSpring的类使在我的域类中使用Hibernate变得容易又好用。 但是,在搜索一个不相关的问题时,我看到有人提到,这HibernateDaoSupport不是使用Spring和Hibernate的最佳方法。任何人都可以阐明以下几点: 为什么不推荐? 整合Hibernate和Spring的最佳方法(或至少是公认的方法)是什么?
69 hibernate  spring 

1
查询,本机查询,命名查询和类型查询之间的区别
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 查询,本机查询,命名查询和类型查询之间有什么区别?“独立”查询是否存在,还是只是缩写?在我看来,本机查询是用简单sql编写的查询,而命名查询与实体(休眠映射)有关。有人可以简要解释一下吗?

17
该行已由另一个事务更新或删除(或未保存的值映射不正确)
我有一个在网络服务器上运行的Java项目。我总是碰到这个例外。 我阅读了一些文档,发现悲观锁定(或乐观,但我阅读悲观更好)是防止此异常的最佳方法。 但是我找不到任何清晰的示例来说明如何使用它。 我的方法是这样的: @Transactional Public void test(Email email, String Subject){ getEmailById(String id); email.setSubject(Subject); updateEmail(email); } 而: Email 是一个休眠类(它将是数据库中的一个表) getEmailById(String id)是一个返回的函数email(此方法未使用注释@Transctional) updateEmail(email):是一种更新电子邮件的方法。 注:我使用Hibernate进行保存,更新和等(例如:session.getcurrentSession.save(email)) 例外: ERROR 2011-12-21 15:29:24,910 Could not synchronize database state with session [myScheduler-1] org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [email#21] …

12
找到对集合org.hibernate.HibernateException的共享引用
我收到此错误消息: 错误:找到对集合的共享引用:Person.relatedPersons 当我尝试执行时addToRelatedPersons(anotherPerson): person.addToRelatedPersons(anotherPerson); anotherPerson.addToRelatedPersons(person); anotherPerson.save(); person.save(); 我的网域: Person { static hasMany = [relatedPersons:Person]; } 知道为什么会这样吗?

9
休眠或JDBC
我有一个胖客户端,带有25个表和约15个JInternalFrames(表的数据输入表单)的架构的java swing应用程序。我需要为DBMS交互选择直接的JDBC或ORM(在这种情况下为Spring框架休眠)的设计选择。应用程序的构建将在将来发生。 对于这样规模的项目,冬眠会显得过大吗?对于肯定或否定答案的解释将不胜感激(如果需要,甚至可以采用其他方法)。 TIA。
68 java  hibernate  jdbc 

7
如何使用Hibernate将初始数据导入数据库?
部署应用程序时,我经常使用Hibernate的功能来创建数据库架构,以简化部署。通过配置hibernate.hbm2ddl.auto属性可以轻松实现。 但是,有时我还需要向数据库中插入一些初始数据,例如root用户。有什么办法可以通过休眠并加载某种文本文件来实现? 我知道我可以轻松地编写将要执行此操作的代码,但是只是想知道是否已经有一些实用程序可以帮助我通过配置实现相同的功能?


12
Hibernate,iBatis,Java EE或其他Java ORM工具
我们正在计划大型的企业应用程序。在经历了J2EE的痛苦之后,我们将重点放在评估休眠状态上。 新的Java EE API看起来更简单。我还阅读了一些有关Hibernate和iBatis的好东西。我们的团队对任何框架都缺乏经验。 我想确定5个主要比较点 学习曲线/易用性 生产率 可维护性/稳定性 性能/可伸缩性 轻松排除故障 如果您要管理一个由约2名J2EE经验的开发人员组成的团队,那么您将使用哪种ORM工具,为什么呢?

4
JPA继承@EntityGraph包括子类的可选关联
给定以下域模型,我想加载所有Answers,包括其Values和其各自的子孩子,并将其放入中AnswerDTO,然后转换为JSON。我有一个可行的解决方案,但它遇到了N + 1问题,我想通过使用ad-hoc摆脱它@EntityGraph。所有关联都已配置LAZY。 @Query("SELECT a FROM Answer a") @EntityGraph(attributePaths = {"value"}) public List<Answer> findAll(); 使用的ad-hoc @EntityGraph对Repository方法我可以确保值是预取的,以防止N + 1上的Answer->Value相关性。虽然我的结果还不错,但是还有一个N + 1问题,因为延迟加载s 的selected关联MCValue。 使用这个 @EntityGraph(attributePaths = {"value.selected"}) 失败,因为该selected字段当然只是某些Value实体的一部分: Unable to locate Attribute with the the given name [selected] on this ManagedType [x.model.Value]; 我如何告诉JPA仅selected在值是a的情况下才尝试获取关联MCValue?我需要类似的东西optionalAttributePaths。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.