是否有一种更优雅的方法可以避免javax.persistence.EntityNotFoundException在调用EntityManager.remove()可能存在或可能不存在于持久状态的对象时?我试图避免我需要进行2次查询以删除对象的情况.目前我作弊:
void remove(String id) {
T model = entityManager.getReference(type, id);
entityManager.remove(model);
}
Run Code Online (Sandbox Code Playgroud)
但是如果模型不存在,这将抛出异常.
我可以:
void remove(String id) {
T model = retrieve(id);
if(model != null)
entityManager.remove(model);
}
Run Code Online (Sandbox Code Playgroud)
但这将涉及2个查询(暂时不考虑缓存的概念).
唯一的可能性是使用带有 DELETE 和 WHERE 子句的查询。工作正常,除了 JPA 不会对要删除的对象调用任何 @PreDelete 或 @PostDelete 操作。我想你无论如何也不希望这样,所以继续查询。如果您想调用侦听器,则必须在删除之前加载该对象(显然)。
| 归档时间: |
|
| 查看次数: |
2865 次 |
| 最近记录: |