Java 如何在单独的文件中创建命名查询

Java 如何在单独的文件中创建命名查询,java,jpa,named-query,Java,Jpa,Named Query,我需要将所有命名查询保存在一个单独的文件中。比如说 @javax.persistence.NamedQueries({ @NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")}) public class AllNamedQueries { } 现在,这本身就导致了一个错误“命名查询只能在实体或MappedSuperClass类中定义” 如何在单独的文件中创建命名查询?我所说的分离是指实体

我需要将所有命名查询保存在一个单独的文件中。比如说

@javax.persistence.NamedQueries({
    @NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")})

public class AllNamedQueries {

}
现在,这本身就导致了一个错误“命名查询只能在实体或MappedSuperClass类中定义”


如何在单独的文件中创建命名查询?我所说的分离是指实体文件以外的文件。

您可以使用
orm.xml
来定义xml中的JPA映射。这种方法是等效的,可以覆盖注释

示例基于:



我使用的是OpenJPA,而不是hibernate。hibernate与此有什么关系?这是JPA,符合规范。@SQC:
orm.xml
是JPA标准描述符:用xml定义JPA映射-适用于每个JPA提供者。谢谢你们,我以为OpenJPA不用
<entity class="com.example.Employee">
    <table name="Employee.findAll" />
    <named-query name="findAll">
        <query><![CDATA[
          SELECT e
          FROM Employee e
        ]]></query>
    </named-query>
</entity>