2011-09-20 98 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

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