JPQL jpa(@Query)for update列与二进制运算符mysql Query有什么关系?

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查询

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);
此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列执行二进制操作。