我正在执行以下几行:

  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

奇怪的情况。
如果我只用一个实例执行它,就可以正常工作,但是如果我与一个以上实例并行执行(一个mdb),那么第一个实例将被执行而没有任何异常,其余所有实例都会收到此错误:
10:04:50,750 ERROR [log] ECMSDispatcherMdb.onMessage, error: No entity found for query

知道会导致什么吗?以及它是如何第一次工作的,但是对于所有其他实例却没有?

谢谢,

射线。

最佳答案

该错误消息通常告诉您,该查询未返回任何结果。因此getSingleResult()失败。

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

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

07-27 21:35