一尘不染

如何在Hibernate注释应用程序中外部化命名查询?

hibernate

有没有一种方法可以将HQL命名查询外部化为外部文件。我有太多的命名查询,在实体类的开头使用@NamedQueries和会@NamedQuery很麻烦。

有没有一种方法可以将多个文件外部化?


阅读 235

收藏
2020-06-20

共1个答案

一尘不染

您可以将查询放入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>

您也可以将类型和过滤器定义放在同一文件中。

2020-06-20