我正在使用spring-boot 1.5.6 RELEASE
,我想做一件基本的事情,将我的查询从存储库中的@Query
注解移动到任何xml文件。
经过一番阅读,我发现我们可以使用orm.xml
或jpa-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.xml
和persistence.xml
)需要存储在哪里,因为我没有META-INF
文件夹。
提前感谢!!
2条答案
按热度按时间pftdvrlh1#
在
resources
文件夹中创建META-INF
。现在在META-INF
文件夹中创建jpa-named-queries.properties
文件。在这个属性文件中编写查询,如下所示:
Customer.findAllCustomerByNamedQuery=Select c from Customer c
其中
Customer
表示实体类的名称,findAllCustomerByNamedQuery
是查询名称在您的客户存储库中,写入以下内容以调用在属性文件中写入的查询:
List<Customer> findAllCustomerByNamedQuery();
ny6fqffe2#
可以使用spring data jpa中的命名查询。
要将其与repository方法绑定,您的repository类可以如下所示:
另一种方法(更性感,但目前,having problem with java 17)是使用spring-native-query,它从资源中读取sql文件。它允许您使用直接绑定到sql文件的自定义存储库类型(如果需要,还可以使用sql的条件部分)。