找不到查询异常的实体

ray*_*man 23 java jboss ejb jpa

我正在执行以下行:

  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)

什么可能导致它?以及它是如何在第一次工作,但对于所有其他实例它不是吗?

谢谢,

射线.

And*_*s_D 53

错误消息通常告诉您,查询未返回任何结果.所以getSingleResult()失败了.

如果您期望空查询结果,请考虑使用getResultList()并测试isEmpty()结果:

T03CallsLog newCall = null;
List results = q1.getResultList();
if (!results.isEmpty())
   newCall = (T03CallsLog) results.get(0);
else
   // is it a problem? -> log.
Run Code Online (Sandbox Code Playgroud)


Chr*_*ach 7

如果查询未返回任何结果,则抛出NoResultExceptiongetSingleResult().您确定,秒MDB会通过您的查询获得任何结果吗?