JPQLにCASE式というものはありますか?質問する

JPQLにCASE式というものはありますか?質問する

次のようなテーブルがあるとします。

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 ステートメントを作成する方法、つまりケース式を JPQL に翻訳する方法はありますか?

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

ベストアンサー1

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#JPA_2.0 の新機能

おすすめ記事