full stack trace (up until application specific stuff) is: 2007-03-22 21:34:53,287 : SEVERE : WorkThread-2/34 : Logger.log : system exception in business method: <4|true|0.9.7-incubating-SNAPSHOT> org.apache.openjpa.persistence.ArgumentException: Could not locate metadata for the class using alias "PositionLog". Registered alias mappings: "{PositionLog=[class com.lbslogics.ims.model.PositionLog]}" at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:345) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:164) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:142) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:211) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:181) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:174) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access $500(JPQLExpressionBuilder.java:61) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder $ParsedJPQL.populate(JPQLExpressionBuilder.java:1668) at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52) at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145) at org.apache.openjpa.datacache.QueryCacheStoreQuery.populateFromCompilation(QueryCacheStoreQuery.java:237) at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:644) at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:625) at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:591) at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:653) at org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:560) at org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:785) at org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:62) at com.lbslogics.ims.model.PositionLog.findById(PositionLog.java:175) at com.lbslogics.ims.persistence.ejb.EventBean.getPositionLog(EventBean.java:2875) [ ... some more ]
The corresponding EventBean is a SLSB (EJB2.1) and the method looks like that: /** * * @return */ public PositionLog getPositionLog(final EntityManager em) { final PositionLog log = PositionLog.findById(em, getPositionLogId()); return log; } and the Positionlog.findById is a static method which encapsulates some of the "technical work": public static PositionLog findById(EntityManager em, Long plId) { Query q = em.createNamedQuery("PositionLog.byId"); q.setParameter("id", plId); try { return (PositionLog) q.getSingleResult(); } catch (javax.persistence.NoResultException e) { logger.finest("findById: did not find result for id=" + plId); return null; } } This method or better the top-level entry point of this method is called several hundred times for different records, all invoked by a MDB. Could it be some concurrency issue because after several hundred invocations only a single exception occured? Hans Am Freitag, den 23.03.2007, 05:48 -0700 schrieb Patrick Linskey: > Could you post the full stack trace, and maybe some code showing how > you're invoking the JPA APIs? > > -Patrick >