2015年4月28日JPAではテーブルをクラスで定義します。例外とかはいろいろあるのですが、1テーブル1クラスというつくりで、これをエンティティと呼びます。クラスを作ってからDBを作成したり、JTAの規約どおりにテーブルが設計されていればリレーションなどもSQLを書くことなく楽にかけます。ところが、規約を無視していたりするとなかなかこれが難儀です。JPAでのリレーションの取得方法JPAでリレーションを定義する方法は大きく分けて、リレーションされたテーブルのプロパティを格納しておくエンティティクラスを再作成する方法アノテーションでリレーションを管理する方法の2通りがあります。WEBでいろいろ検索しましたが、2の情報のほうがよくでてきますね。アノテーションで管理する場合、WHERE句が複雑なときの対処法などがいまいちよくわかりません。SQLを書かなくてよいメリットはあるのですが。ここでは1の方法であるリレーションされたテーブルのエンティティを再作成する方法を説明したいと思います。Product,Supplier両方のプロパティを保持するクラスをつくる。SettedProductとします。SettedProductに保持させたいプロパティと定義する、リレーション情報などは一切書かない。この例で言うとproductID,supplierId,supplierName,productNameをprivateで普通に定義し、ゲッター、セッターと後述するインスタンスを記述しておきます。エンティティマネージャーにて下記のようなJPQLのSQL文を書きます。“,SettedProduct.class).getResutList();これでproductsをみてリレーションが取れていればOKです。コンストラクタ式といいます。SettedProductのなかにはこのコンストラクタを当然用意しておかなくてはいけません。ようはJOINしたプロパティを収容できるクラスを定義し、そこに対してセットします。プロパティが多いと大変そうですが、とりあえずこれでリレーションがとえます。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト関連記事Seleniumでの画面テスト普段テストはJunitで単体テストを書いていますが、画面からのテストなどは当然チェックできません。...CDIの循環依存エラー&JSFでの条件分岐について本日は小ネタなので2つのネタをまとめます。テーブルとはCSSを学習したあとはデータベースの学習などを。これを読んでいきます。話したので、第二、第三に進んでいきます。今回はCASEとHAVINGを組み合わせて、そこそこの難問を解いていきます。下記のようなテーブル(testresults)があるとします。