我将用一个例子来解释这个问题。
我有一个 Vehicle 对象,它有一个型号名称和一个品牌。给出品牌时,应列出相关车辆。当同时给出品牌和型号时,应列出合适的车辆。
例如:有一个名为“Vehicle”的实体。它有一个名为 makeModel 的代理,其实体名称为MakeModel
。MakeModel 的代理是“make”和“model”,其实体名称是 Model 和 Make。实体“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;
}
这是我尝试获取车辆清单的方法。这里,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();
但这会返回所有车辆。我想使用休眠标准而不是 HQL 来获取所有车辆。