JPQL jpa(@Query)for update列与二进制运算符mysql Query有什么关系?
SQL查询:JPQL jpa(@Query)for update列与二进制运算符mysql Query有什么关系?,mysql,spring-boot,jpa,jpql,Mysql,Spring Boot,Jpa,Jpql,SQL查询: update de_meta set service_lines = service_lines | 5 where de_id = 20; @Modifying @Query("update DeMetaEntity set serviceLines = serviceLines | ?2 where deId = ?1") void addDeServiceLineMap(Integer deId, int serviceLine); 这在SQL控制台中运行良好 JPA查询
update de_meta set service_lines = service_lines | 5 where de_id = 20;
@Modifying
@Query("update DeMetaEntity set serviceLines = serviceLines | ?2 where deId = ?1")
void addDeServiceLineMap(Integer deId, int serviceLine);
这在SQL控制台中运行良好
JPA查询:
update de_meta set service_lines = service_lines | 5 where de_id = 20;
@Modifying
@Query("update DeMetaEntity set serviceLines = serviceLines | ?2 where deId = ?1")
void addDeServiceLineMap(Integer deId, int serviceLine);
此JPA查询引发错误,因为|(按位或)在JPQL中无效。
有没有办法为给定的SQL查询编写等价的JPQL
我不想使用条件查询。正如我在JAVA接口上使用的那样 按照Alan的建议创建本机查询:
@Modifying
@Query("update de_meta set service_lines = service_lines | ?2 where de_id = ?1", nativeQuery=true)
void addDeServiceLineMap(Integer deId, int serviceLine);
开关nativeQuery=true将按原样执行SQL查询。将其指定为本机查询。我想将其用作单个更新查询,而不首先执行select。不知道你打算怎么做@查询(“update-demetentity set-serviceLines=serviceLines |?2,其中deId=?1”,nativeQuery=true)好的,您想解决什么问题?为什么要编写查询而不是修改内存中的实体并将其持久化?我不想读取服务行、更改和持久化。相反,我希望在不读取值的情况下直接对service_line列执行二进制操作。