当前位置: 首页 > 面试题库 >

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

东郭京
2023-03-14
问题内容

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

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


问题答案:

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

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



 类似资料:
  • 我的应用程序中有两个绑定类型的命名实例: 我有一个类,希望每个类使用一个实例。由于技术原因,此类不能直接注入实例,它必须向实例注入提供程序: 问题是,上面的FooPrime注入不是注入名为“prime”的实例,而是注入名为“prime”的提供者,这当然不是我想要的。 如何让Guice为名为“prime”的Foo实例注入一个提供程序?

  • 问题内容: 一位新同事刚刚建议在Hibernate中使用带有注释(即@NamedQuery)的命名HQL查询,而不是将HQL嵌入到我们的XxxxRepository类中。 我想知道的是,使用注释是否可以提供集中查询以外的任何优势? 特别是,是否有一些性能提升,例如因为查询仅在加载类时解析一次,而不是每次执行Repository方法时解析一次? 问题答案: 来自Pro EJB 3(Mike Keit

  • 我一直在思考编译时评估注释值的Java特性,它似乎真的很难外部化注释值。 但是,我不确定这是否真的是不可能的,所以我非常感谢对此的任何建议或明确的答案。 更重要的是,我试图将控制Spring中预定方法调用之间延迟的注释值外部化,例如: 假设位于类路径上,并且包含属性键及其相应的长整型值。 现在,这段代码有明显的编译错误,因为我们试图将值赋给变量,但这是强制性的,因为我们不能将变量赋给注释值,除非它

  • 问题内容: 在Hibernate中如何注释Blob列?到目前为止,我有一堂课,有: 问题答案: @Lob应该可以解决blob和clob(使用String作为类型)

  • 问题内容: 是否可以使用Hibernate验证程序API将经过验证的对象存储在带有注释的字段中?例如,我想通过调用Java方法而不是在Java bean属性上添加注释来验证地址。 问题答案: 是的,有可能。尝试类似的东西, 看看这里。 (编辑必须为6个字符)

  • 我有一个包含三个字段的表,比如a、b、c。我想添加一个约束,确保如果a不为null,那么b和c也不为null。我已经使用以下SQL完成了这项工作 使用hibernate注解@Check有没有办法达到同样的效果? 我找不到一个有用的注释示例,开发人员倾向于根本不使用它吗?