java - 使用 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 进行批量更新?
解决方案
尝试这样的事情,自定义 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);
推荐阅读
- ruby-on-rails - 为新模型创建随机 UID
- python - 删除速度与删除列表
- android - 错误说:不能使用提供的参数调用以下函数
- node.js - 尽管填充了 Node.Js,但无法使用 req.query.parameterName 在看似空的 url 中获取参数
- javascript - 如何解决 Digital Ocean 上的 BuildJobExitNonZero
- python - Django Apache 站点永远加载
- python - 我的不和谐机器人给了我 AttributeError("'NoneType' object has no attribute 'roles'")
- reactjs - 如何将表格行的值分配给 React 中的复选框?
- html - 如何在右下角 div 中获得滚动条
- sql - 数据转换和除以零的 SQL 问题(拉出我的头发)