質問:JPAエンジニアリングのNamedQueryが有効になるには、エンティティのフルパスを書く必要があります.


最近Spring 3を再構築しました.0.5+Hibernate-Jpa2.0の工事、テストの時ずっと以下の誤りを報告します:
Caused by: org.hibernate.HibernateException: Errors in named queries: findAllPersons
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:397)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
	... 55 more

HQL文findAllPersonsも最も簡単です.
@NamedQuery(name = "findAllPersons", query = "select p from Person p")

そしてPersonをクラスの全パスに変更し、テストに成功しました.
以前はNamedQueryと書いていた時もそうでしたが、少しも間違っていませんでした.長い間チェックしていましたが、エンティティを構成するときにエラーが発生したことに気づきました.
エラーコード:

@Entity(name = "person_table")
@NamedQuery(name = "findAllPersons", query = "select p from Person p")
public class Person implements Serializable {

正しいコードは次のとおりです.

@Entity
@Table(name = "person_table")
@NamedQuery(name = "findAllPersons", query = "select p from Person p")
public class Person implements Serializable {

問題は解決しましたが、Hibernateがロード中にどのように行われたのかはまだ分かりません..