1

クラス「Item」があり、Vehicle、Vmodel、Category、ItemName、Brand、SizeModelと呼ばれるいくつかの関連クラスがあります。これらの各クラスにはプロパティIDと名前があります(たとえば、Vehicleクラス「vid」と「vname」)。アイテムクラスにはアイテムコードがあります。

また、特定のサンプル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();
        }

私はこれを参照しました(15.6セクションとそのセクションの最後のサンプルコード)。

上記のコードを実行すると、エラーが発生します(org.hibernate.QueryException:プロパティを解決できませんでした:vmodel of:Entity.Vehicle)。どこに問題があり、どこをチェックすればよいか教えてください。私のすべてのマッピングおよびその他の構成クラスは、NetbeansIDEを使用して作成されています。

4

1 に答える 1

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();
于 2011-09-20T09:36:03.693 に答える