【问题标题】:Sql Case expression in JPA criteria updateJPA条件更新中的Sql Case表达式
【发布时间】:2018-05-17 15:35:21
【问题描述】:

我有一个命名查询:

"UPDATE student SET student.marks = " +
"    CASE WHEN student.name in :" + nameListOne + 
"         THEN 10 ELSE marks " + 
"     END  , student.class = 6 WHERE student.name in :" +  namelistOneAndTwo

如何使用标准更新来实现这一点。 这只是一个例子,我想了解如何在标准更新中使用 case 表达式。

【问题讨论】:

  • 另外,请标记您的 DBMS
  • 问题是针对 jpa 标准更新的。
  • 所以告诉人们您尝试了什么,以及您在 Criteria 中创建的哪个部分有问题......(并修复您在“sudent”中的问题中的错字)

标签: sql jpa case criteria-api


【解决方案1】:

进行两次更新可能会更容易。不确定“nameListOne”是什么,我假设这是动态 SQL 查询字符串中的某个参数。

UPDATE student 
   SET marks = 10
 WHERE name IN nameListOne;

UPDATE student
   SET class = 6
 WHERE name IN nameListOneAndTwo;

让事情保持简单和直观是有价值的。

【讨论】:

  • 问题是针对标准更新的。我们如何在条件更新中实现提到的 jpa 命名查询。
  • 公平地说,问题由 JPQL 语句解释,因此@Error_2646 的答案也由 JPQL 指定。他的想法仍然有效,尽管它并没有真正回答如何使用标准 API 进行 CASE。但我不会否决有助于解决问题中指定的查询给出的具体问题的建设性答案......
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 2023-03-07
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
相关资源
最近更新 更多