Примем следующие записи отображения:NHibernate внутреннее соединение мастер-деталь на колонке, кроме идентификатора
< имя класса = таблицы "Клиент" = "клиент">
<id name="InternalId" column="uintCustomerId" type="long">
<generator class="identity" />
</id>
<!-- The BinaryBlob below is a 16 byte array - Think Guid.NewGuid().ToByteArray -->
<property name="CustomerUid" column="uidCustomerId" type="BinaryBlob" not-null="true" />
<property name="Name" column="strFullName" type="String" not-null="true" />
<property name="Age" column="intAge" type="System.Int32" not-null="true" />
<set name="Orders" table="order" generic="true" inverse="false" lazy="false" cascade="all">
<key column="uidCustomerId" />
<one-to-many class="Order" />
</set>
< имя класса = "Order" таблица = "порядок">
<id name="InternalId" column="uintOrderId" type="long">
<generator class="identity" />
</id>
<!-- This BinaryBlob is a 16 byte array - Think Guid.NewGuid().ToByteArray -->
<property name="CustomerUid" column="uidCustomerId" type="BinaryBlob" not-null="true" />
<property name="OrderDate" column="datOrderDate" type="System.DateTime" not-null="true" />
Итак, есть 2 Классы: Заказчик - Заказ со свойствами, как определено в приведенном выше отображении
рк Клиент uintCustomerId
Орден PK является uintOrderId
uidCustomerId является уникальным ключом в таблице Customer и Ф.К. Клиенту на Таблица заказов uidCustomerId является двоичным (16)
База данных не может быть изменена.
Учитывая вышеизложенное. Как мы можем запросить API-интерфейс NHibernate, чтобы привести Клиента и связанные с ним Заказы, которые после заданной даты. ПРИМЕЧАНИЕ. Нам нужно присоединиться к uidCustomerId, который не является первичным ключом.
Это что-то, что можно сделать с помощью API критериев? Это что-то, что можно сделать с помощью HQL?
Спасибо, Тасос
Я не понимаю. Если у вас уже есть сопоставление, почему бы вам просто не получить Клиента как обычно, чем ссылаться на заказы через простое свойство Customer.Orders? –
Спасибо за ваш комментарий Mufasa Как бы вы выполняли запрос, если бы хотели, чтобы заказчик имел заказы после определенной даты? – Anastasiosyal