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ファイルに配置することを提案しています。これは私の問題を解決するためのアイデアかもしれませんが、私の質問には答えません...;)