有没有一种方法可以将HQL命名查询外部化为外部文件。我有太多的命名查询,在实体类的开头使用@NamedQueries和会@NamedQuery很麻烦。
@NamedQueries
@NamedQuery
有没有一种方法可以将多个文件外部化?
您可以将查询放入package- info.java域对象的根包中的类中。但是,您必须使用Hibernate自己的@NamedQueries和@NamedQuery批注,而不是使用javax.persistence。
package- info.java
javax.persistence
示例package-info.java文件:
package-info.java
@org.hibernate.annotations.NamedQueries({ @org.hibernate.annotations.NamedQuery( name = "foo.findAllUsers", query="from Users") }) package com.foo.domain;
然后,您必须将包添加到中AnnotationConfiguration。我使用Spring,所以需要设置annonatedPackages属性:
AnnotationConfiguration
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>
您也可以将类型和过滤器定义放在同一文件中。