フォローするための休止状態の基準を探しています:
Dokument.classはRole roleIdにマッピングされます
Role.classにはContactPersonのcontactIdがあります
Contact.class FirstName LastName
ContactクラスでFirstまたはLastNameを検索し、接続されているドキュメントのリストを取得したい。
私はこのようなことを試しました:
session.createCriteria(Dokument.class)
.setFetchMode("role",FetchMode.JOIN)
.setFetchMode("contact",FetchMode.JOIN)
.add(Restrictions.eq("LastName","Test")).list();
クラス「Dokument」のプロパティ「LastName」を解決できませんでしたエラーが表示されます
結合されたすべてのテーブルではなく、Dokumentで結合が検索される理由を誰かが説明できますか?すべての助けてくれてありがとう!
フェッチモードは、関連付けをフェッチする必要があることのみを示します。関連するエンティティに制限を追加する場合は、エイリアスまたはサブ基準を作成する必要があります。私は一般的にエイリアスの使用を好みますが、YMMV:
Criteria c = session.createCriteria(Dokument.class, "dokument");
c.createAlias("dokument.role", "role"); // inner join by default
c.createAlias("role.contact", "contact");
c.add(Restrictions.eq("contact.lastName", "Test"));
return c.list();
もちろん、これは Hibernateリファレンスマニュアル で十分に説明されており、 Criteriaのjavadoc にも例があります。ドキュメントを読んでください:役に立つ情報がたくさんあります。