シュンツのつまづき日記スマートフォン用の表示で見るシュンツのつまづき日記2012-09-11テーブルの結合JPA2.0今回はテーブル結合です。JPA2.0で提供されているアノテーションを使用して、テーブル結合した結果をエンティティに設定します。【サンプルコード】[テーブル]ユーザ権限を保持する「user_authority」というテーブルを作成します。(seq_number))前回作成したuserdataテーブルとuser_authorityテーブルは1:多の関係です。結合するカラムはuserdata.user_idとuser_authority.auth_user_idです。seq_numberはserial型となっていますが、エンティティのクラスではint型で扱います。user_authorityテーブルのデータです。userdataテーブルのデータです。(前回とデータは変わっていません)[Entity]user_authorityテーブルに対応するエンティティのクラスを作成します。アクセサメソッドは省略}UserAuthorityクラスでは特に新しいことはしていません。前回に作ったUserDataクラスを修正します。アクセサメソッドは省略}userdataテーブルからuser_authorityテーブルへは1:多の関係なので、UserDataクラスからUserAuthorityのリストを持ちます。1:多の場合はjavax.persistence.OneToManyアノテーションを使用します。OneToMany以外にOneToOne、ManyToOne、ManyToManyアノテーションがあります。結合するカラムの設定はjavax.persistence.JoinColumnアノテーションを使用します。今回はJoinColumnsアノテーションの中には複数のJoinColumnアノテーションの定義が指定できます。結合するカラムが一つの場合はJoinColumnアノテーションだけの指定で動きます。JoinColumnアノテーションではname属性を指定します。結合するカラム名が同じであればname属性だけの指定で動きます。サンプルではカラム名が異なるので、name属性とreferencedColumnName属性を指定しています。name属性には結合先のテーブルのカラム名を、referencedColumnName属性には結合元のテーブルのカラム名を指定します。[persistence.xml]persistence.xmlに今回作成したエンティティクラスを追加します。</persistence-unit></persistence>[データ取得]エンティティクラスのデータを取得するManagedBeanは前回のUserListPageクラスを再利用します。アクセサメソッドは省略}[ページ]ページは今回追加したテーブルの表示処理を追加します。</f:view></html>【実行】ページにアクセスします。結合したテーブルのデータが取得できました。今回はCDIによる連携です。今回はレコード更新についてです。1....2012-09-20カスケード今回はカスケードについてです。月別アーカイブはてなブログをはじめよう!gloryofさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。