当从用户输入创建新实体时,我不能确定没有其他实体具有相同的数据。我能够找到使用的预定义Ids的唯一示例,因此可以通过调用entityManager.find(id)
来检查实体是否存在。如果生成了id,我看到了几种安全保存的方法:
entityManager.persist
并希望最佳捕获EntityExistsException
并吞咽它或显示错误消息。entityManager.merge
并让JPA执行checking...will --它总是正常工作吗?entityManager.persist
我的直觉是采用第三种方法,但还有更好的方法吗?
我正在使用JPA 2,并希望避免使用特定于供应商的解决方案(比如Hibernate的SessionManager.saveOrUpdate
)。
发布于 2012-07-30 00:54:26
如果您真的无法预测新生成的ID是否是唯一的,那么我肯定会使用第三种方法。
而且,我不认为您需要这样简单的查询的条件,而且在大多数情况下,额外查询的成本不会很高。
https://stackoverflow.com/questions/11718008
复制相似问题