如何在CrudRepository的外部文件中存储@Query sql?

mem*_*und 13 java spring spring-data spring-data-jpa

我使用的是spring带有CrudRepositoryS代表数据库连接.

现在我需要一个很长(几行)的SQL查询,我更喜欢在类路径中的文件中维护,而不是直接在代码中.

但我怎么能做到这一点?我的回购看起来如下:

@Query(value = "<my very long sql query>", nativeQuery = true) //how to inject file content?
@Modifying
@Transactional
public void executeSpecificSql();
Run Code Online (Sandbox Code Playgroud)

Swa*_*wal 9

使用以下步骤。

  1. 在src / main / resources-> META-INF文件夹中创建jpa-named-queries.property文件 在此处输入图片说明

  2. 在给定的属性文件中取消查询查询。 在此处输入图片说明 上面的截图看closely.Here 集团是实体名称,而方法应该匹配法库接口定义。查询应具有对象名称,而不是表名称,而不是列名称,而是提供实体中为各个字段指定的变量名称。

  3. 具有属性名称的接口方法

    项目清单

  • 确实,试图提供图形表示以便快速理解。 (3认同)

小智 6

如果您的项目设置有资源文件夹,请在/META-INF/jpa-named-queries.properties文件下创建并将键值对添加为repoClass.methodName=yoursql. 春季数据将回升。

对于较长的查询,最好使用xml带有CDATA标签的属性文件:https : //stackoverflow.com/a/19128259/1194415

  • 此解决方案不回答最初的问题,因为它应该包含:“很长(几行)sql 查询”。尽管在 config.properties 中,每一行新代码都会是一行或丑陋的分配。 (5认同)