有没有办法找出是否从数据库中读取了实体?
此问题与How to know if a detached JPA entity has already been persisted or not?有关。但检查其主键的解决方法不能回答我的问题。对于从导入文件中读取主键的实体,它不起作用。
扩展问题:
JPA实现如何确定是否要插入或更新实体?
答案 0 :(得分:4)
Hibernate使用带有@Version
注释的字段的值(用于乐观锁定)(如果存在)来判断实体是瞬态还是分离。你也可以这样做。
否则,不,没有办法。 POJO是POJO。如果没有@Version字段,Hibernate将使用主键的值。
答案 1 :(得分:1)
要知道Entity
实例当前是否由EntityManager
实例管理myEntityManager.contains(myEntity)
实例,它可能会为您提供帮助,即使我想的大多数情况都是如此实现基于主键状态(JB Nizet完全正确)。
请注意,return false不会断言数据库中不存在该实体。这只是检查实体是否被管理,它可能来自数据库并被分离或被另一个EntityManager
实例检索。