2014年1月28日火曜日

[Play Framework] [JPA] Play Framework1.2.xでJPAを利用してUPDATE処理を行う

JPAでは、Play Frameworkのモデルで行われているO/Rマッピングとは異なり、永続コンテキスト中のエンティティの状態はDBと自動的に同期される

JPAを使ったデータアクセスでポイントとなる永続コンテキストについて

管理されていない状態のオブジェクトを主導で更新することもできるし、JPQLを記述して、より柔軟な更新処理を発行することもできる


  • 管理された状態のオブジェクトの更新
  • 管理されていないオブジェクトの更新
  • JPQLを用いたUPDATE

Book: JPA CRUD Update

今回は、更新時のWHERE句指定を行いたいので、JPQLでクエリを記述する方法を取ることにする

JPAおよびJPQLの書き方について、公式のチュートリアル

英語だけど、JPQLの書き方だけならさほど読むのに時間はかからない。
Java EE6 Tutorial - Chapter 32 Introduction to the Java Persistence API (英語)
Java EE6 Tutorial - Chapter 34 The Java Persistence Query Language (英語)

Play Frameworkの中でJPA APIを使うには


  • JPA エンティティマネージャの取得
  • トランザクション管理

play Japan - Documentation - JPA 永続化

クエリ発行の主役になるのはjavax.persistence.Queryインタフェース

javax.persistence.Query

NamedQueryの定義方法

@Entityアノテーションとクラス定義の間で定義する
JPA注釈の参照情報

QuerySyntaxException: (object) is not mapped という例外でコンパイルできないけどどう見てもクエリ文には、問題がなさそうで困った場合、エンティティクラスを完全修飾クラス名で指定したらうまく行きました
Unable to query database - QuerySyntaxException: (object) is not mapped

0 件のコメント: