java - JPQL 中有这样的 CASE 表达式吗?

标签 java oracle orm jpa

假设有一张 table :

TableA:Field1, Field2, Field3

及相关的JPA实体类

@Entity
@Table(name="TableA")
public class TableA{
  @Id
  @Column(name="Field1")
  private Long id;

  @Column(name="Field2")
  private Long field2;

  @Column(name="Field3")
  private Long field3;

  //... more associated getter and setter...
}

有没有办法构造一个松散地翻译成这个SQL的JPQL语句,即如何把case表达式翻译成JPQL?

select field1,
case
  when field2 = 1 then 'One'
  when field2 = 2 then 'Two'
  else 'Other number'
end,
field3
from tableA;

最佳答案

已在 JPA 2.0 中添加

用法:

SELECT e.name, CASE WHEN (e.salary >= 100000) THEN 1 WHEN (e.salary < 100000) THEN 2 ELSE 0 END FROM Employee e

引用: http://en.wikibooks.org/wiki/Java_Persistence/JPQL_BNF#New_in_JPA_2.0

关于java - JPQL 中有这样的 CASE 表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/427447/

相关文章:

oracle - 精度和规模有什么区别?

java - 如何通过java代码执行Oracle sql脚本

mysql - 简单的 hibernate 不起作用,但级联查询可以

orm - 使用 ORM 工具(框架)有什么优势?

java - 修复了大小为 1 的线程池并使其连续 <- 它们相同吗?

java - Kotlin lateinit 对应java

java - 从文件系统读取二进制文件作为 BLOB 以在 rhino 中使用 javascript

java - 我如何在 java 中做 facebook 批处理 fql

database - 理解oracle数据库数据访问机制

java - @SecondaryTable 注释不适用于不同架构中的相同表名