如何在Spring Data jpa @Query中引用用外部文件编写的长查询

Ish*_*ood 6 spring-data spring-data-jpa spring-boot

  • 我想在外部文件中写入查询(属性或Yaml)以加载数据库。--
  • 这是长查询,放在XXXRepository类中的@Query(“ long query”)中时看起来不太好看。
  • 有没有办法将此查询写入外部文件(属性,yaml,xml或json),然后在spring数据jpa中的@Query()中调用该文件?

Ral*_*ert 8

您可以使用命名查询,其中查询必须在名为META-INF/jpa-named-queries.properties. 请参阅弹簧示例

User.findBySpringDataNamedQuery=select u from User u where u.lastname=?1
Run Code Online (Sandbox Code Playgroud)

在存储库的注释中按名称引用查询,这里是spring 中相应存储库示例

@Query(name = "User.findBySpringDataNamedQuery", countProjection = "u.firstname")
Page<User> findByNamedQueryAndCountProjection(String firstname, Pageable page);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答。我的查询分布在 500 行上以在 Neo4j 中加载数据,我如何将如此长的查询合并到属性文件中,因为查询分布在多行上。我看到一种在每行末尾添加 / 的方法,但放置 \ 500 次并不方便。有没有更好的方法在跨多行的属性文件中编写查询? (3认同)