我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
但getSingleResult
扔了一个Exception
.
谢谢
我正在执行以下行:
String queString = "some query string"
Query q1 = em.createNativeQuery(queString, T03CallsLog.class);
T03CallsLog newCall;
newCall = (T03CallsLog) q1.getSingleResult(); //this line cause the exception after the first time
Run Code Online (Sandbox Code Playgroud)
奇怪的情况.如果我只用一个实例执行它就可以正常工作,但是如果我与多个实例(mdb)并行执行它,那么第一个实例执行没有任何异常,其余的都得到这个错误:
10:04:50,750 ERROR [log] ECMSDispatcherMdb.onMessage, error: No entity found for query
Run Code Online (Sandbox Code Playgroud)
什么可能导致它?以及它是如何在第一次工作,但对于所有其他实例它不是吗?
谢谢,
射线.