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.QueryNamedQueryの定義方法
@Entityアノテーションとクラス定義の間で定義するJPA注釈の参照情報
QuerySyntaxException: (object) is not mapped という例外でコンパイルできないけどどう見てもクエリ文には、問題がなさそうで困った場合、エンティティクラスを完全修飾クラス名で指定したらうまく行きました
Unable to query database - QuerySyntaxException: (object) is not mapped
0 件のコメント:
コメントを投稿