2011-09-20 72 views
1

有一个“Item”类,它有一些关联的类,分别叫Vehicle,Vmodel,Category,ItemName,Brand,SizeModel。每个类都有合适的id和名字(例如Vehicle class, vid“和”vname“)。Item类有itemcode。关联对象的休眠标准

此外,我需要从给定示例Item对象(称为“sItem”),它等于我的示例项目对象的属性和我的对象的关联对象属性中的Item对象。 这里是我的代码

Session session = getSession(); 
     List list = null; 
     try { 
      list = session.createCriteria(Item.class).add(Example.create(sItem)) 
        .createCriteria("vehicle").add(Example.create(sItem.getVehicle())). 
        createCriteria("vmodel").add(Example.create(sItem.getVmodel())). 
        createCriteria("category").add(Example.create(sItem.getCategory())). 
        createCriteria("itemName").add(Example.create(sItem.getItemName())). 
        createCriteria("brands").add(Example.create(sItem.getBrands())). 
        createCriteria("sizeModel").add(Example.create(sItem.getSizeModel())). 
        list(); 
     } catch (HibernateException e) { 
      e.printStackTrace(); 
     } 

我refered this(15.6节,并在该节最后示例代码)。

当执行上述代码时,发生错误 (org.hibernate.QueryException:无法解析属性:vmodel:Entity.Vehicle)。请任何人告诉我问题在哪里,我应该在哪里查看。我的所有映射和其他配置类都是使用Netbeans IDE创建的。

+0

好奇:这个问题是如何与摇摆? – kleopatra

回答

1

尽量拆分你这样的标准创建代码:

Criteria baseCrit = session.createCriteria(Item.class).add(Example.create(sItem)); 
baseCrit.createCriteria("vehicle").add(Example.create(sItem.getVehicle())); 
baseCrit.createCriteria("vmodel").add(Example.create(sItem.getVmodel())); 
baseCrit.createCriteria("category").add(Example.create(sItem.getCategory())); 
baseCrit.createCriteria("itemName").add(Example.create(sItem.getItemName())); 
baseCrit.createCriteria("brands").add(Example.create(sItem.getBrands())); 
baseCrit.createCriteria("sizeModel").add(Example.create(sItem.getSizeModel())); 
list = baseCrit.list(); 
+0

哇... :)它的工作完美。非常感谢。 –