0
バージョンで子供を結合するためのAPIと同等以下のHBMと基準親
class Parent {
Long id; //auto generated sequence and primary key
String name;
Set<Child> children;
}
class Child {
Long id;
String name;
Parent parent;
}
::私が欲しいもの
<class name="my.Parent" table=PARENT">
<id name="id" column="PARENT_ID" type="java.lang.Long">
<property name="name" column="NAME" type="java.lang.String">
<set name="children" table="CHILDREN" inverse="true">
<key><column name="PARENT_ID" not-null="true" /></key>
<one-to-many class="my.Child" />
</set>
</class>
<class name="my.Child" table=CHILD">
<composite-id>
<key-many-to-one name="parent" column="PARENT_ID" class="my.Parent" />
<key-property name="id" column="CHILD_ID" type="java.lang.Long" />
</composite-id>
<property name="name" column="NAME" type="java.lang.String">
</class>
3.3
こんにちは、 をHibernateは私が2つの単純なモデルを持っていますこれを達成するには、次のようにします: "親の名前が「John」であるすべての子を選択します。このようなhqlのCriteria api相当の記述方法はわかりません:
SELECT child
FROM Child as child join child.parent
where parent.name = 'John'
私は1つ下のを試してみましたが、その予想を生成しないが、クエリに参加:
Criteria c = session.createCriteria(Child.class);
c.createCriteria("parent").add(Restrictions.eq("name", "John");
c.list();
誰も私が間違っているのか見てもらえますか?
アイデアをいただければ幸いです。
?結果に何が問題なのですか? –
HBMは、Parentテーブルへのjoinを使用してクエリを生成しています。 Criteria APIがParentに追加した制限を生成していますが、FROM句にParentテーブルを追加したり、where句に(parent_idの)join条件を追加したりしていません。 – Bhargava