示例代码如下:
/** *复杂JPA操作 使用@Query()自定义sql语句 根据业务id UId去更新整个实体 * 删除和更新操作,需要@Modifying和@Transactional注解的支持 * * 更新操作中 如果某个字段为null则不更新,否则更新【注意符号和空格位置】 * * @param huaYangArea 传入实体,分别取实体字段进行set * @return 更新操作返回sql作用条数 */ @Modifying @Transactional @Query("update HuaYangArea hy set " + "hy.areaName = CASE WHEN :#{#huaYangArea.areaName} IS NULL THEN hy.areaName ELSE :#{#huaYangArea.areaName} END ," + "hy.areaPerson = CASE WHEN :#{#huaYangArea.areaPerson} IS NULL THEN hy.areaPerson ELSE :#{#huaYangArea.areaPerson} END ," + "hy.updateDate = CASE WHEN :#{#huaYangArea.updateDate} IS NULL THEN hy.updateDate ELSE :#{#huaYangArea.updateDate} END ," + "hy.updateId = CASE WHEN :#{#huaYangArea.updateId} IS NULL THEN hy.updateId ELSE :#{#huaYangArea.updateId} END " + "where hy.uid = :#{#huaYangArea.uid}") int update(@Param("huaYangArea") HuaYangArea huaYangArea);