我已经成功地javax.persistence.NamedQuery
与 JPA2 结合使用。命名查询定义在实体类文件的顶部,用于无状态 EJB(实体外观)。
现在我必须将实体类文件提取到一个单独的 Jar 文件中(这样我们就可以从 Google Web Toolkit 项目中使用它们)。显然我仍然包含 jar,但现在外观 bean 不再找到查询:
java.lang.IllegalArgumentException: NamedQuery of name: Store.findByExternalId not found.
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getDatabaseQueryInternal(EJBQueryImpl.java:576)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1004)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:533)
at com.skalio.bonusapp.server.StoreFacade.getByExternalId(StoreFacade.java:43)
...
这里有什么问题?我不能在外部 Jar 中定义 NamedQueries 吗?
我刚刚找到这个链接,建议将 NamedQueries 放在 XML 文件中,而不是作为实体文件中的注释。这可能是解决我的问题的一个想法,但没有回答我的问题...... ;)