当前位置: 首页 > 知识库问答 >
问题:

Spring和具有Hibernate的JPA,不同的对象标识

尚河
2023-03-14

我有一个标准的Spring/JPA/Hibernate设置。带有@Transactional的服务方法,它使用两个不同的DAO,每个DAO都注入了自己的EntityManager实例。

当查询时,什么是最终相同的实体(直接和间接检索),它们被表示为不同的对象,即使对于相同的hibernate会话(事务)它们应该是相同的对象。

共有1个答案

严信瑞
2023-03-14

即使Hibernate会话相同,对象标识也可能不同。在使用EntityManager.Find方法按标识符读取的情况下,返回的对象在同一会话(第一级缓存)中总是相同的。然而,使用JPQL或条件查询可以得到不同的实例(具有相同的数据)。

 类似资料:
  • 我有一个列数可变的表(取决于客户),所以我在寻找一种使用JPA/Hibernate或其他方法将该表与java对象映射的方法 我不能使用POJO,因为它仅限于一个稳定的表,所以我想像这样使用java对象 } 存储MyObject的表: 当然还有质疑的可能性

  • 以前我没有得到任何错误,但突然我开始得到错误:

  • 我想知道Spring boot JPA是如何使用hibernate的,Spring boot JPA和hibernate之间有什么关系吗?当我们使用boot jpa时,我们只是实现了org.springframework.data.jpa.repository.jparepository接口,可以使用与列名匹配的函数名编写查询,也可以编写自定义查询,那么hibernate在这里的角色是什么?我们怎

  • 我目前正在开发一个应用程序,用于查看谁负责不同的病人,但是我还没有解决如何用不同的对象类型填充一个表格。 下面是我的表视图控制器的代码。TableView 最终将有四个不同的对象类型,所有对象类型都将从数据库中检索。 我希望我的表包含患者对象、用户对象(负责)和关系管理器对象。 下面是我的代码,如果你需要更多的代码,请告诉我:-)。 关系数据是返回的关系管理器对象。此对象包含一个用户对象、一个患者

  • 我有以下问题: 有人对此有解释吗?我考虑从我的业务服务中的hibernate会话中重新加载对象,并从Struts HTTP会话中复制实体对象中的数据。 Hibernate映射

  • null 对于我的数据,我有时会遇到这样的问题:A有一组不同的B对象,而这些B对象引用同一个C对象。 当我调用时,我会得到一个hibernate错误:。我知道hibernate不能在同一个会话中插入/更新/删除同一个对象两次,但是有什么方法可以解决这个问题吗?这似乎并不是一种罕见的情况。 在我研究这个问题的过程中,我看到有人建议使用,但当我这样做时,任何“冲突”对象都会作为所有值都设置为null的