私は、Hibernate 基準を使用して検索機能を実装しようと懸命に努力してきました。要件は少しあいまいです。ユーザーは検索フィールドに任意のテキスト/単語を入力できます。検索は、相互に関連付けられていない複数のテーブルを介して行う必要があります。
次に、2 つのエンティティ クラスを示します。
Table A (EntityClassA.java)
Table B (EntityClassB.java)
ユーザーがこれらの 2 つのテーブルで検索され、入力された文字に一致するフェッチされたリストを返す必要がある "anycharecter" を入力した場合。また、テーブル A の結果を List に保存し、テーブル B の結果を List に保存したいと考えています。
休止状態の基準を使用してこれをどのように達成できるかわかりません。
これを 1 つのテーブルにしか書くことができませんでした。
public List<EntityClassAVo> search((string keywords){
List<EntityClassAVo> outputList = new ArrayList<EntityClassVo>();
Criteria criteria = etSessionFactory().getCurrentSession().createCriteria(EntityClassA.class);
//applying restriction - as I need to search entered string in all columns.
criteria.add(Restrictions.ilike("id", keywords, MatchMode.ANYWHERE));
criteria.add(Restrictions.ilike("name", keywords, MatchMode.ANYWHERE));
criteria.add(Restrictions.ilike("age", keywords, MatchMode.ANYWHERE));
outputList = criteria.list();
return outputList;
}
質問
1) 可能であれば、同じ「検索」メソッドで EntityClassB.java の条件を記述する方法は?
2) 質問 1 が可能な場合、EntityClassA から取得した結果をあるオブジェクトに格納し、EntityClassB を別のオブジェクトに格納する方法を教えてください。
3) 上記が簡単にできない場合は、おそらくデザインの変更を依頼するつもりです (ただし、強い理由がある場合のみ)。・(表A)と(表B)の間に中間表(表X)を入れようと考えています。
[編集済み] 4) ユーザーが 1 つのテーブルのいずれかまたは両方から結果を検索するシナリオがあります。この状態をどのように確認しますか?
このことを解読するのを手伝ってください。