首页 > 解决方案 > 使用 Spring JPA/Hibernate 按不同值批量更新

问题描述

有Java实体类:

class Call {
   int callId,
   String callStatus
}

callStatus 可能的值:SETUP、INSTALLED、FINISHED

并且表calls_statuses具有值

callId callStatus
1       SETUP
2       INSTALLED
3       INSTALLED

然后我需要将 callId 1 和 2 的状态更改为:

1       INSTALLED
2       FINISHED

callId 3 的呼叫保持不变。

是否可以使用 Spring JPA/Hibernate 进行批量更新?

标签: javaspringhibernatejpa

解决方案


尝试这样的事情,自定义 JPQL 查询会:

    @Query("Update CallStatuses cs SET cs.callStatus = CASE WHEN (cs.callId IN :calls1) THEN :callStatusInstalled WHEN (cs.id IN :calls2) THEN :callStatusFinished END")
    batchUpdateCallStatus(@Param("calls1")List<int> calls1,
                          @Param("calls2") List<int> calls2,
                          @Param("callStatusInstalled") String callStatusInstalled, 
                          @Param("callStatusFinished") String callStatusFinished);

可能重复:JPQL - 使用多个 where 条件更新


推荐阅读