Java spring引导应用程序中的外部化查询
我使用的是Java spring引导应用程序中的外部化查询,java,xml,spring,spring-boot,spring-data-jpa,Java,Xml,Spring,Spring Boot,Spring Data Jpa,我使用的是spring boot 1.5.6版本。我想做一件基本的事情,将我的查询从存储库中的@Query注释移动到任何xml文件中 经过一些阅读,我发现我们可以使用orm.xml或jpa命名查询.properties来编写自定义查询 我不理解这些XML文件必须出现在哪里的文件结构。而且我的项目中没有META-INF文件夹 例如: POJO类: @Entity public Class Customer { private int id; private String name; // ge
spring boot 1.5.6版本
。我想做一件基本的事情,将我的查询从存储库中的@Query
注释移动到任何xml文件中
经过一些阅读,我发现我们可以使用orm.xml
或jpa命名查询.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();
}
公共接口CustomerRepository扩展了分页和排序存储库{
//我需要从外部xml文件中执行此查询,因为它在连接方面可能非常复杂
@查询(“从客户cust中选择cust”)
公共列表findAllCustomers();
}
编辑:参考。我需要知道这些文件(orm.xml
和persistence.xml
)需要存储在哪里,因为我没有META-INF
文件夹
提前谢谢 在
resources
文件夹中创建META-INF
。现在在META-INF
文件夹中创建jpa named querys.properties
文件
将查询写入此属性文件,如下所示:
Customer.findAllCustomerByNamedQuery=从客户c中选择c
其中,Customer
表示实体类的名称,findAllCustomerByNamedQuery
是查询名称
在您的客户存储库中,编写以下内容以调用在属性文件中编写的查询:
列出findAllCustomerByNamedQuery()代码>可能重复的是,我遇到了这个问题。但正如我提到的,我没有一个META-INF
文件夹,我非常困惑这些properties/xml
文件必须存储在哪里@TODDP请检查github示例,如果META-INF不存在,则必须创建它。谢谢!手动创建META-INF对我来说很有用!有什么原因不能和application.properties这样的文件一起创建吗?我不知道为什么。谢谢!这正是我们想要的。你在哪里找到这些信息的?@SebastianDuque谢谢你的评论。我从spring数据示例存储库中找到了这些信息,以下是链接: