2012-02-23 8 views
0

2つのテーブルAとBがあります。それぞれに対応するhbm.xmlとpojoがあります。
Class A{
  String aId;
  String col;
}
Class B{
  String bId;
  String aId;//as reference to class A
  A aObj;
}
B.hbm.xml contains the following entry to map A to B:
<many-to-one name="aId" column="AID" not-null="true" class="com.pojo.A" unique="true"/>
私の要件は、Bのオブジェクトが作成されるたびにデータをテーブルAにプッシュする必要があるということです。同様に私がBから読んだとき、それはまたaIdに基づいて私にAからのデータを与えるべきです。これは1対1のマッピングです。 aIdの値を入力としてクエリに渡したいとします。一致した行に対応する両方のテーブルからデータを取得します。 これを達成するためにHQLクエリを使用する方法を教えてもらえますか?そして、私が今持っている構造は私の要求に合っていますか?複数のテーブルからデータを取得するためのHQLクエリ

答えて

1

クラスが正しくありません。 BクラスにはタイプAのフィールドがありますが、フィールドにはaIdはありません。

unidirectional OneToOne associationsのHibernateのドキュメントを読んでください。これはこれがあなたのものです。

あなたの要件は、BからAへのすべての操作がcascadeであり、この関連付けを熱心に取得する必要があることを示しています(<many-to-one lazy="false"...>)。

+0

これらの変更を行った後、コードを実行しようとすると、次のHQLを実行する例外が発生します。 bAlias、bAlias.aObj from B bAlias bAlias.aObj.aId =? bAlias.aObj.col =? エラー:無効なオブジェクト名B(Bはテーブル名) – user811433

関連する問題