0

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 には、Client への多対 1 のマッピングが含まれていません。

ドメイン情報要素を持つクライアント エンティティをデータベースに挿入すると、すべて正常に動作します。各ドメイン情報エントリには、適切なクライアントにマップされた「クライアント」列が含まれています。

ここで、特定のネットワーク ドメインとユーザー名でユーザーにクエリを実行したいと考えています。

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]

これは簡単な作業だと思いますか?ここで何が問題なのですか?

前もって感謝します!

4

1 に答える 1

0

それを修正しました:

select c from Client c left join c.domainInfo d where d.username = :winuser and d.domain = :windomain
于 2012-06-06T09:18:09.600 に答える