解决方法
您可以将查询放入package-info.
java类中,例如,您的域对象的根包.但是,您必须使用Hibernate自己的@NamedQueries和@NamedQuery注释,而不是使用javax.persistence.
package-info.java文件示例:
@org.hibernate.annotations.NamedQueries({ @org.hibernate.annotations.NamedQuery( name = "foo.findAllUsers",query="from Users") }) package com.foo.domain;
然后,您必须将包添加到您的AnnotationConfiguration.我使用Spring,所以有一个设置annonatedPackages属性的问题:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionfactorybean"> <property name="annotatedClasses"> <list> ... </list> </property> <property name="annotatedPackages"> <list> <value>com.foo.domain</value> </list> </property>
您也可以将类型和过滤器定义放在同一个文件中.