在Spring启动应用程序中外部化查询

时间:2017-09-05 17:41:26

标签: java xml spring spring-boot spring-data-jpa

我正在使用spring-boot 1.5.6 RELEASE。我想做一个基本的事情,将我的查询从存储库中的@Query注释移动到任何xml文件。

经过一些阅读后,我发现我们可以使用orm.xmljpa-named-queries.properties来编写自定义查询。

我不了解这些XML文件必须存在的文件结构。我的项目中没有META-INF文件夹。

示例:

POJO班级:

@Entity
public Class Customer {

private int id;
private String name;

// getters and setters
}

存储库:

public interface CustomerRepository extends PagingAndSortingRepository<Customer,Integer> {

// this query I need from an external xml file as it might be quite complex in terms of joins
@Query("Select cust from Customers cust")
public List<Customer> findAllCustomers();

}

编辑:提到this stackoverflow question。我需要知道这些文件(orm.xmlpersistence.xml)的位置需要存储,因为我没有META-INF文件夹。

提前致谢!!

1 个答案:

答案 0 :(得分:4)

META-INF文件夹中创建resources。现在在jpa-named-queries.properties文件夹中创建META-INF文件。

在此属性文件中写下您的查询,如下所示:

Customer.findAllCustomerByNamedQuery=Select c from Customer c

其中Customer表示实体类的名称,findAllCustomerByNamedQuery是查询名称

在您的客户存储库中编写此代码以调用在属性文件中编写的查询:

List<Customer> findAllCustomerByNamedQuery();