私は最新のプロジェクトでnHibernateを使用し、作業中のプライマリテーブルまたはコンポジットのような単純な関係のいずれかに値が存在するすべての基本的な関係を正常にマッピングしました。
行き詰まっているのは、複雑な結合のマッピングをどのように行うかです。
たとえば、 Name、DOB、Phoneなどの通常のプロパティを持つContact
それぞれというエンティティがあります。しかし、 。contact
というプロパティを持つ必要もあります。AccreditationList
List<Accreditation>
これは、ContactXML宣言のサンプルです。
<class name="Contact" table="Contact" lazy="true">
<id name="ID" column="ContactID" type="guid">
<generator class="guid" />
</id>
<property name="FirstName">
<column name="FirstName" sql-type="nvarchar(500)" not-null="true" />
</property>
<property name="LastName">
<column name="LastName" sql-type="nvarchar(500)" not-null="true" />
</property>
<bag name="AccreditationList" lazy="true">
//How do I express the relationship here?
</bag>
</class>
は、このList<Accreditation>
ような一連の結合によってのみ決定できます。
SELECT Accreditation.* FROM CourseEnrolment
INNER JOIN Course ON Course.CourseID = CourseEnrolment.CourseID
INNER JOIN CourseType ON CourseType.CourseTypeID = Course.CourseTypeID
INNER JOIN Accreditation ON Accreditation.AccreditationID = CourseType.AccreditationID
WHERE CourseEnrolment.ContactID = :ContactID
コードでnHibernateを介してSQLを手動で呼び出すことによってこれを達成する唯一の方法ですか、CreateSQLQuery
それとも名前付きクエリのようなものを使用してこの関係を表現できますか?正しいアプローチは何ですか?任意のガイダンスをいただければ幸いです。