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

时间:2013-10-25 14:26:35

标签: spring hibernate jpa transactions

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

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

我的DAO使用不同的hibernate会话,还是......?

1 个答案:

答案 0 :(得分:1)

即使hibernate会话相同,对象标识也可能不同。如果您使用entityManager.find方法通过标识符读取,则返回的对象在同一会话中始终相同(第一级缓存)。但是,使用JPQL或条件查询可以获得不同的实例(具有相同的数据)。