我有一个与 n 个网络域帐户相关的客户实体。
Client:
IList<DomainInfo> domainInfo;
DomainInfo:
string domain;
string username;
Client.hbm.xml 的映射包含:
<bag name="domainInfo" cascade="all" lazy="false">
<key column="client"/>
<one-to-many class="Kardex.CMS.Domain.Model.Client.DomainInfo"/>
</bag>
DomainInfo.hbm.xml 的 mappinf 不包含到客户端的多对一映射。
当我将带有域信息元素的客户端实体插入数据库时,一切正常。每个域信息条目都包含映射到正确客户端的“客户端”列。
现在我想查询具有特定网络域和用户名的用户:
clients = session.CreateQuery("from Client c where c.domainInfo.username = :winuser and c.domainInfo.domain = :windomain")
.SetParameter("winuser", "john_doe")
.SetParameter("windomain", "domain123")
.List<Client>();
但我得到一个例外:
illegal attempt to dereference collection [client0_.id.domainInfo] with element
property reference [username]
我也尝试了 INNER JOIN,但后来又遇到了另一个异常:
from Client c inner join c.domainInfo d where d.username = :winuser and d.domain = :windomain
投掷
Could not execute query[SQL: SQL not available]
我猜这应该是一个简单的任务?这里有什么问题?
先感谢您!