2

Criteria API を使用して、次の HQL クエリをコーディングしようとしています。

var userList = _session
                .CreateQuery("select u from User u where u.Role.ID=3 and u.Customer.ID=:cID")
                .SetInt32("cID", 1)
                .List<User>();

(3 つの NHibernate オブジェクト: ユーザー (ID、名前、役割、顧客)、役割 (ID、名前)、顧客 (ID、名前))。

次のことを試しましたが、NHibernate が Role に関連付けられた Customer を見つけようとするため、機能しません。

var userList = _session
            .CreateCriteria(typeof(User))
            .CreateCriteria("Role")
            .Add(Restrictions.Eq("ID", 3) )
            .CreateCriteria("Customer")
            .Add(Restrictions.Eq("ID", 1) )
            .List<User>();

それを行う他の方法(うまくいきます!)はありますか?

4

1 に答える 1

4

エイリアスを使用できます

var userList = _session
        .CreateCriteria(typeof(User), "u")
        .CreateAlias("u.Role", "r")
        .Add(Restrictions.Eq("r.ID", 3) )
        .CreateAlias("u.Customer", "c")
        .Add(Restrictions.Eq("c.ID", 1) )
        .List<User>();

それが役に立てば幸い

于 2008-12-17T07:31:25.283 に答える