【发布时间】:2012-07-30 08:43:41
【问题描述】:
从用户输入创建新实体时,我无法确定没有其他实体具有相同的数据。我能找到的唯一示例使用了预定义的 ID,因此可以通过调用 entityManager.find(id) 来检查实体是否存在。如果生成了 id,我看到了几种安全持久的方法:
- 致电
entityManager.persist并希望最好 - 抓住EntityExistsException并吞下它或显示错误消息 - 致电
entityManager.merge并让JPA 进行检查...它会一直正常工作吗? - 通过查询搜索实体 - jPQL 或条件,如果找不到,请调用
entityManager.persist
我的直觉是采用第三种方法,但还有更好的方法吗?
我正在使用 JPA 2,并希望避免使用特定于供应商的解决方案(例如 Hibernate 的SessionManager.saveOrUpdate)
【问题讨论】:
-
“生成的ID”是指用户生成的ID?为什么不使用合成 ID?
-
@Tichodroma - 不,我的意思是用
@GeneratedValue注释的 ID。