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

pkln4tw6  于 2022-11-05  发布在  Spring
关注(0)|答案(3)|浏览(174)
  • 我想在外部文件中写入查询(属性或yaml)以加载数据库。-
  • 这是一个长查询,放在XXXRepository类的@Query(“长查询”)中时看起来不太好。
  • 是否有办法在外部文件(属性、yaml、xml或json)中编写此查询,并在spring data jpa中的@Query()中调用该文件?
clj7thdc

clj7thdc1#

您可以使用命名查询,其中的查询必须定义在名为META-INF/jpa-named-queries.properties的档案中。请参阅spring example

User.findBySpringDataNamedQuery=select u from User u where u.lastname=?1

在存储库的注解中按名称引用查询,这里是corresponding repository example from spring

@Query(name = "User.findBySpringDataNamedQuery", countProjection = "u.firstname")
Page<User> findByNamedQueryAndCountProjection(String firstname, Pageable page);
ecr0jaav

ecr0jaav2#

按照Ralf Stuckert的建议,使用META-INF/jpa-named-queries.properties存储命名查询
您可以使用\将长查询拆分为多行。
示例:

Customer.findNameNative=\
SELECT C.NAME \
FROM CUST_TABLE C \
WHERE CONDITIONS
u4vypkhs

u4vypkhs3#

我想你正在找一个地方把你的大查询字符串作为可读的?像Mybatisxml。据我所知,在数据jpa中没有这样做的方法。
但是您可以将这个大型查询放在存储过程中,然后像下面这样轻松地调用它。

Call your_stored_procedure_name(param1,param2):

相关问题