我使用spring
和CrudRepository
进行数据库连接。
现在我需要一个相当长(几行)的sql查询,我更愿意将其保存在类路径的文件中,而不是直接保存在代码中。
但我如何才能做到这一点呢?我的回购协议如下所示:
@Query(value = "<my very long sql query>", nativeQuery = true) //how to inject file content?
@Modifying
@Transactional
public void executeSpecificSql();
4条答案
按热度按时间gojuced71#
使用以下步骤。
1.在jpa-named-queries.propertysrc/main/resources--〉META-INF文件夹x1c 0d1x中创建www.example.com文件
1.在给定属性文件中定义您查询
请仔细查看上面屏幕截图此处Group是实体名称,而Method应与匹配,方法在存储库接口中定义***查询应具有对象名称而不是表名称,并应提供实体中为各个字段指定变量名称而不是列名
1.具有属性名称的接口方法
bmp9r5qi2#
如果你的项目设置有资源文件夹,在
/META-INF/jpa-named-queries.properties
文件下创建,并添加键值对repoClass.methodName=yoursql
.Spring Data 将被拾取。对于较长的查询,最好使用带有
CDATA
标签的xml
属性文件:https://stackoverflow.com/a/19128259/1194415wfypjpf43#
不确定它是否适合您的设置,但是,可以通过以下方式实现:
1)使用
<sql-query>
标记将查询添加到HibernateMap文件2)使用
<mapping>
标记定义一个包含上述文件的hib配置文件3)使用指向上述配置文件的属性
"hibernate.ejb.cfgfile"
定义持久性文件4)使用上面的属性文件生成
EntityManagerFactory
现在,上面的Query可以在Repository方法中使用:
aemubtdh4#
从Java 15开始,您可以将查询存储为单独类中的Text blocks:
并将其用作字符串常量: