如何解决JpaRepository不读取本机查询中的字符串参数
我在Spring Boot应用程序中遇到JpaRepository问题 我想对我的数据库执行一个简单的更新查询,但事实证明,本机查询很烦人,请帮忙
public interface ImageRepository extends JpaRepository<Image,Integer> {
@Modifying
@Transactional
@Query(value = "UPDATE image SET path =(0?),status = (1?) WHERE Id = (2?)",nativeQuery = true)
void update(String path,String status,int Id);
}
com.microsoft.sqlserver.jdbc.sqlServerException: Incorrect Syntax near '@P0'.
我试图将sql方言更改为 org.hibernate.dialect.sqlServer2008Dialect org.hibernate.dialect.sqlServer2012Dialect 分别,但没有一个起作用。
我也尝试用另一种方式写查询,这不会给我一个错误,但不会更新字段。它可以从方法中检测整数值,但会将字符串值设置为emply值:
@Query(value = "UPDATE image SET physical_path =(0),status = (1) WHERE Id = (2)",nativeQuery = true)
如果有人遇到相同的问题,请支持
解决方法
在Spring Data JPA - Reference中,您可以看到参数(以您想要使用的方式)的定义类似于-> ?1,?2 etc..
另外,请记住,JPQL语法与普通sql略有不同。
@Modifying
@Query("update Image i set i.path = ?1 where i.status = ?2 where i.id = ?3")
void update(String path,String status,int id);
,
像这样构造查询:
@Query(value = "UPDATE image i SET path =:path,status = :status WHERE i.Id = :Id",nativeQuery = true)
void update(@Param("path") String path,@Param("status") String status,@Param("Id") int Id);
关于位置参数:
@Query(value = "UPDATE image i SET path = ?1,status = ?2 WHERE i.Id = ?3",nativeQuery = true)
void update(String path,int Id);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。