1

私はSQLクエリを持っています:

select * from A
INNER JOIN B
ON A.id = B.id
INNER JOIN C
ON B.id = C.id
INNER JOIN D
ON C.id = D.id
where D.name = 'XYZ'
   and D.Sex = 'M'

上記のSQLの休止状態のクエリ基準を使用しようとしていますが、問題があります。誰か助けてくれませんか。

4

2 に答える 2

5
Criteria c = session.createCriteria(A.class, "a");
                    .createAlias("a.b", "b")
                    .createAlias("b.c", "c")
                    .createAlias("c.d", "d")
                    .add(Restrictions.eq("d.sex", "M"))
                    .add(Restrictions.eq("d.name", "XYZ"));
于 2012-07-04T21:01:31.520 に答える
1

あなたの質問では、Cartesian Joinを実行したいのですが、これは Criteria ではサポートされていませんが、以下に示すように HQL で実行できます。ここに同様の質問があります

HQL クエリを使用すると、次のようなことができます。

select a from 
   A a, 
   B b, 
   C c 
where 
   a.id = b.id and 
   c.id = b.id and 
   d.id = c.id and 
   d.name = 'XYZ' and 
   d.sex = 'M'

クエリは、通常の hibernate クエリで使用されます。

Query query = session.createQuery(query); // <-- here you use the query above
List results = query.list();
于 2012-07-04T19:55:25.023 に答える