例を挙げて問題を説明します。
モデル名とメーカーを持つ Vehicle オブジェクトがあります。メーカーが指定されている場合は、関連する車両をリストする必要があります。メーカーとモデルの両方が指定されている場合は、適切な車両をリストする必要があります。
例: 'Vehicle' というエンティティがあり、エンティティ名が である makeModel というプロキシがありMakeModel
ます。MakeModel には、エンティティ名が Model および Make である「make」および「model」のプロキシがあります。両方のエンティティ「Model」および「Make」には、文字列変数「name」があります。クラスは次のとおりです。
class Vehicle{
private Integer vehicleId;
private MakeModel makeMOdel;
//getters and setters
}
class MakeModel {
private Make make;
private Model model;
//getters and setters
}
class Make{
private Integer mid;
private String make;
}
class Model{
private Integer mdlid;
private String modelName;
}
車両リストを取得しようとした方法は次のとおりです。これがHibernate session
Session です。
Criteria cr= session.createCriteria(Vehicle.class);
MakeModel mkmd=new MakeModel();
if( /* if only the make is give */){
Make mk=new Make();
mk.setMake("Toyota");
mkmd.setMake(mk);
}
else if(if both make and and model given){
Make mk=new Make();
mk.setMake("Toyota");
mkmd.setMake(mk);
Model md=new Model("Venus");
mkmd.setModel(md);
}
cr.createCriteria("makeModel").add(Example.create(mkmd));List l=cr.list();
しかし、これはすべての vehicle を返します。HQL ではなく、休止状態の基準を使用してすべての車両を取得したいと考えています。
同じ質問がここにあり、これも参照できます。どこが間違っているのか、特定の基準に従って車両リストを取得する方法を教えてください。