4

有什么方法可以确定是否从数据库中读取了实体?

这个问题与如何知道分离的 JPA 实体是否已被持久化有关?. 但是检查其主键的解决方法不能回答我的问题。它不适用于从导入文件中读取主键的实体。

扩展问题:

JPA 实现如何确定是否要插入或更新实体?

4

2 回答 2

4

Hibernate 使用带有(用于乐观锁定)注释的字段的值@Version(如果存在)来判断实体是瞬态的还是分离的。你也可以这样做。

否则,不行,没有办法。POJO 是 POJO。如果不存在 @Version 字段,Hibernate 将使用主键的值。

于 2013-05-20T10:15:51.510 回答
1

要知道一个Entity实例当前是否由给定EntityManager实例管理,您有该myEntityManager.contains(myEntity)方法,它可能会为您解决问题,即使我认为大多数实现都基于主键状态(JB Nizet 完全正确)。

请注意,return false 并不断言实体不存在于数据库中。这只是检查实体是否被管理,它可能来自数据库并被分离或被另一个EntityManager实例检索。

于 2013-05-20T10:26:20.900 回答