以下に示すように、Oracle(10g)データベースには多くのテーブルのうち3つがあります。Springバージョン3.0.2でHibernateTools3.2.1.GAを使用しています。
- 製品-親テーブル
- 色-親テーブル
- ProductColour-テーブルの結合-参照
colourIdとprodIdofColourおよびProductテーブルそれぞれ
ここで、はとの間のProductColour結合テーブルです。テーブル名が示すように、との間には多対多の関係があります。データベース内の関係は簡単に想像でき、これだけの情報で明確になると思います。したがって、この関係について詳しく説明するつもりはありません。ProductColourProductProductColour
の1つのエンティティ(行)Productは、の任意の数のエンティティに関連付けられColour、の1つのエンティティ(行)はColour、の任意の数のエンティティに関連付けることもできますProduct。
たとえば、Productテーブルで使用可能な行数をカウントする必要があるとしましょう(Hibernateに関して)。これは、次のように実行できます。
Object rowCount = session.createCriteria(Product.class)
.setProjection(Projections.rowCount()).uniqueResult();
ProductColourテーブルで使用可能な行数をカウントする必要がある場合はどうなりますか?これは多対多の関係であるため、ProductおよびColourエンティティクラス(POJO)にマッピングされ、テーブルjava.util.Setの直接POJOクラスは使用できません。ProductColourしたがって、前述の行カウントステートメントはこのシナリオでは機能しないようです。
Hibernateでそのような結合エンティティの行数をカウントする正確な方法はありますか?