当前位置: 首页 > 面试题库 >

休眠对象相等性检查

阮才俊
2023-03-14
问题内容

据我了解(如果我错了,请纠正我),Hibernate使用对象引用来检查对象的相等性。当Hibernate识别同一数据库记录中有多个对象附加时,它将引发以下异常。

"a different object with the same identifier value was already associated with the session"

我的问题是,Hibernate是否使用equal()方法检查对象是否相等(默认的equal方法使用对象引用)?如果为true,则重写的equal()方法会改变Hibernate的行为吗?

注意:我的问题不是关于Hibernate持久对象中的实现equal()hashCode()方法问题

谢谢。


问题答案:

Hibernate使用实体(即类)和已配置的ID。过于简化,看起来像这样

o1.getClass().equals(o2.getClass()) && o1.getId().equals(o2.getId())


 类似资料:
  • 问题内容: 我有一堂课; 我还有一节课; 我将如何搜索Student ,名字John,lastName Doe? 如果是出生日期属性,我将在日期上创建一个并添加一个相等限制()。我将如何对AppUser对象中的lastName和firstName进行操作? 问题答案: 查询: 要使用条件,请检查此线程 还可以从hibernate文档中查看此页面

  • 问题内容: 是否有任何的java utils的,允许检查对象平等,不受 平等 覆盖?由于某些原因,我不想为类提供equals方法。我在单元测试中需要类似 SomeUtils.equals(a,b)之 类的东西 , 它比较所有对象字段(我想是通过反射)。 问题答案: 您可以在Apache Commons EqualsBuilder中使用

  • 问题内容: 这是对该问题的更多甚至更好的描述: 我做一个简单的选择查询。返回列表包含确切的记录/对象数,就好像我在数据库中进行相同的查询一样,但是问题在于所有对象都是相同/相同的。 例如,这是数据库中的结果(我删除了空值): 26801 01-JAN-00 7 31-DEC-99 7 Obere Kirchstr。26 CH 8304 Walliselln 26801 01-JAN-00 2 31

  • 问题内容: 在我的模型中,我有一个抽象的“ User”类,以及多个子类,例如Applicant,HiringManager和Interviewer。它们在一个表中,我只有一个DAO来管理它们。 用户: HiringManager(例如): 现在,如果我想得到所有与部门无关的招聘经理,我该怎么做?我想它看起来像: 但是,当我运行此代码时,Hibernate抱怨“无法解析属性:角色”(这实际上是有道理

  • 问题内容: 我有问题,也许有人认为它很愚蠢。Hibernate快吗?我在系统中使用它,对数据库的查询非常多。并且性能变得警觉。和其他问题脱离当前背景。有什么更好的选择- 许多简单查询(使用单个表)还是较少一些查询的查询? 先进的坦克的Artem 问题答案: 首先,您可以做很多事情来加快Hibernate的速度。查阅这些高性能hibernate技巧文章,以全面了解可以采取哪些措施来加快数据访问层的速

  • 问题内容: 我有一个包含三个字段的表,例如a,b,c。我想添加一个约束,以确保如果a不为null,那么b和c也不为null。我已经使用以下SQL做到了 有没有一种方法可以使用hibernate注释@Check达到相同的效果? 我找不到带有该注释的有用示例,开发人员是否倾向于完全不使用它? 问题答案: 是的,可以在类级别使用,例如: (请注意,我使用@jarlh注释重写了您的情况。)该条款注释需要参