【问题标题】:Externalize query in spring boot application在 Spring Boot 应用程序中外部化查询
【发布时间】:2018-02-14 01:56:57
【问题描述】:

我正在使用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 文件夹。

提前致谢!!

【问题讨论】:

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


【解决方案1】:

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

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

Customer.findAllCustomerByNamedQuery=Select c from Customer c

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

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

List&lt;Customer&gt; findAllCustomerByNamedQuery();

【讨论】:

  • 谢谢!手动创建 META-INF 对我有用!是否有任何理由不与 application.properties 之类的文件一起创建它?
  • 不知道是什么原因
  • 谢谢!正是在寻找什么。您在哪里找到这些信息?
  • @SebastianDuque 感谢您的评论。我从 spring-data-example 存储库中找到了这些信息,这是链接:github.com/spring-projects/spring-data-examples
  • 请注意,这个 jpa-named-queries.properties 没有被 Intellij IDEA 语法高亮
猜你喜欢
  • 2021-12-16
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 2021-10-07
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多