springdata jpa@Query表名作为参数会自动添加单引号,导致报错

在使用springdata jpa时,利用@Query写原生的sql想要表名作为参数传递,发现springdata jpa会默认给参数添加单引号,导致报错。

1、表结构及数据

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

2、实体类

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

3、repository

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

因为需要使用到mysql的函数,所以使用的是原生sql,nativeQuery=true,这里默认是false。

4、测试

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

测试结果:

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

注意到会给我传入的表名添加单引号,导致sql语法异常。

5、解决方法

使用EntityManager创建本地查询,sql语句可以拼接表名。

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

测试结果

springdata jpa@Query表名作为参数会自动添加单引号,导致报错

 

 

 

 

上一篇:Springdata jpa 入门


下一篇:springdata_多表关系中的一对一__小案例