您可以使用DetachedCriteria構建子查詢。
Contact contact = session.Get<Contact>(1);
ICriteria criteria = session
.createCriteria(Information.class)
.add(Property.ne("name", contact.getName()));
Disclamer:
// This corresponds to (select firstname from contact where id = 1)
DetachedCriteria subquery = DetachedCriteria.forClass(Contact.class)
.add(Restrictions.eq("id", 1))
.setProjection(Projections.property("name"))
// This corresponds to (select information where name not in (subquery))
ICriteria criteria = session
.createCriteria(Information.class)
.add(Subqueries.notIn("name", subquery));
而不是使用子查詢,你可以使用session.get,有機會命中緩存只需加載接觸我是一個)不是一個Java程序員和b)可能犯了錯誤,因此可能不會編譯。代碼更多地粗略地顯示了這個想法,無論如何希望有幫助。