我有一个insertOrUpdate
方法插入一个Entity
当它不存在时或更新它(如果存在)。为了实现这一点,我必须findByIdAndForeignKey
,如果它返回null
如果没有则插入,然后更新。问题是如何检查它是否存在?所以我尝试了getSingleResult
。但如果
public Profile findByUserNameAndPropertyName(String userName, String propertyName) {
String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName";
Query query = entityManager.createNamedQuery(namedQuery);
query.setParameter("name", userName);
query.setParameter("propName", propertyName);
Object result = query.getSingleResult();
if (result == null) return null;
return (Profile) result;
}
but getSingleResult
抛出一个Exception
.
Thanks
抛出异常是怎样的getSingleResult()表示找不到。我个人无法忍受这种API。它强制进行虚假异常处理,但没有任何实际好处。您只需将代码包装在 try-catch 块中即可。
或者,您可以查询列表并查看其是否为空。这不会引发异常。实际上,由于您在技术上没有进行主键查找,因此可能会有多个结果(即使一个、两个或外键或约束的组合在实践中使这不可能),所以这可能是更合适的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)