質問

私は基準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のは、役割に関連付けられている顧客を見つけようとするので、それは動作しません。

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

他の方法、それをやっての?

役に立ちましたか?

解決

は、

の別名を使用することができます
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>();

それがお役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top