从用户输入创建新实体时,我不能确定没有其他实体具有相同的数据。我能够找到的唯一示例使用了预定义的 Id,因此可以通过调用来检查实体是否存在entityManager.find(id)
。如果生成了 id,我看到了几种安全持久的方法:
- 打电话
entityManager.persist
并希望最好 - 抓住EntityExistsException
并吞下它或显示错误消息 - 打电话
entityManager.merge
让 JPA 进行检查……它会一直正常工作吗? - 通过查询搜索实体 - jPQL 或条件,
entityManager.persist
如果未找到则调用
我的直觉是采用第三种方法,但还有更好的方法吗?
我正在使用 JPA 2,并希望避免使用特定于供应商的解决方案(如 Hibernate 的SessionManager.saveOrUpdate
)