【发布时间】:2020-10-29 18:36:57
【问题描述】:
我正在尝试使用可选参数更新行,但下面的查询出现错误。
@Modifying
@Transactional
@Query("UPDATE Visit visits SET "
+ " visits.approvalStatus is null OR visits.approvalStatus = :approvalStatus "
+ " , visits.declineReason is null OR visits.declineReason =:declineReason "
+ " WHERE visits.visitId in :visitIds ")
public int patchUpdate(@Param("approvalStatus") String approvalStatus,
@Param("declineReason") String declineReason, @Param("visitIds") List<Integer> visitIds);
错误日志:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting EQ, found 'is' near line 1, column 69 [UPDATE com.quest.vms.entity.Visit visits SET visits.approvalStatus is null OR visits.approvalStatus = :approvalStatus WHERE visits.visitId in :visitIds ]
编辑添加信息:这里我想在新数据不为空时更新特定字段,否则应忽略该参数。
感谢您的帮助
【问题讨论】:
-
您在此查询中的意图是什么?如果它不为空,您是否尝试更新approvalStatus?
-
是的@Shawrup,我只在字段不为空时才更新字段,我还有一些其他字段要添加到此查询中
-
我只在字段不为空时才更新字段你的意思是现有的approvalStatus不为空还是新数据不为空?
-
新数据不为空时
-
也许在
where条件下添加and :approvalStatus is not null就足够了
标签: java spring-boot jpa spring-data-jpa