質問: session.createcriteria(enquiry.class); crit.add(expression.eq("lecture.admin.id", userid));` _この結果は例外です。 _org.hibernate.queryexception: could not resolve property: lecture.admin.id of: xxx.yyy.enquiry_enquiryクラスには、レクチャー変数が含まれており、レクチャー変数には管理変数が含まれています。 _lecture.id_を使用してみましたが、正常に動作します。このようにオブジェクト階層を下ることができるレベルの数に制限はありますか?ありがとう!コードスニペット:_public class lecture extends transferitem { private user admin; public user getadmin() { return admin; } } _'user'クラスはpersonクラスを拡張し、それがitemclassを拡張します。これはgetid() methodを持っています:_public integer getid() { if (id != null) { return id; } return transferbean.not_set; } _hibernateマッピングxmlから:_<class name="user" table="user"> <id column="user_id" name="id"> <generator class="increment"/> </id> ... <class name="lecture" table="lecture"> <many-to-one class="user" column="user_fk" lazy="false" name="admin"/>` _これはuserテーブルです:_mysql> show columns from user; +-----------------+--------------+------+-----+---------+-------+ | field | type | null | key | default | extra | +-----------------+--------------+------+-----+---------+-------+ | user_id | int(11) | no | pri | | | | firstname | varchar(50) | yes | | null | | | lastname | varchar(50) | yes | | null | | | signature | varchar(16) | yes | | null | | | email_signature | varchar(256) | yes | | null | | | password | varchar(32) | yes | | null | | | phone | varchar(16) | yes | | null | | | email | varchar(255) | yes | uni | null | | | lecturer_fk | int(11) | yes | mul | null | | | access | int(11) | yes | | null | | | deleted | tinyint(1) | yes | | null | | +-----------------+--------------+------+-----+---------+-------+ 11 rows in set (0.02 sec)` _
回答: criteria crit = session.createcriteria(enquiry.class) crit.createalias("lecture.admin", "lectureadmin"); crit.add(expression.eq("lectureadmin.id", userid)); 実際にオブジェクトグラフを深く掘り下げると、問題が発生する可能性があります。私は通常、上記のようにエイリアスを作成してこれを回避します。