关联对象的Hibernate标准

时间:2011-09-20 09:21:47

标签: java hibernate hibernate-criteria

有一个类“Item”,它有一些名为Vehicle,Vmodel,Category,ItemName,Brand,SizeModel的关联类。每个类都有自己的id和名称(例如Vehicle类,“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();
        }

我提到了this(该部分中的15.6节和最后一个示例代码)。

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

1 个答案:

答案 0 :(得分: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();