Nhibernate - запрос с таблицей соединений без связи - PullRequest
3 голосов
/ 10 марта 2009

Мне было интересно, пытался ли кто-нибудь сделать это в NHibernate.

У меня есть следующие таблицы (упрощенная версия).

ГОРОД: город (varchar2) (PK) провинция (varchar2) (PK)

CITY_TL: город (varchar2) (PK) провинция (varchar2) (PK) lang (char (2)) (PK)

РАСПОЛОЖЕНИЕ: местоположение (varchar2) (PK) какой-то другой столбец.

Как видите, между ГОРОДОМ и РАСПОЛОЖЕНИЕМ нет никакой связи. Тем не менее, он был создан таким образом, что CITY.Province может быть равен LOCATION.Location. Итак, я могу выполнить запрос следующим образом:

выберите c. * из города с присоединиться к city_tl ctl на c.city = ctl.city присоединиться к местоположению l на l.location = c.province

Как мне это сделать в NHibernate? Это вообще выполнимо?

Вот мои файлы сопоставления для CITY и LOCATION

Город:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="NHDAL"
                   namespace="NHDAL.Domain">

  <class name="CityTL" table="CITY_TL">
    <composite-id>
      <key-property column="CITY" type="String" name="Name"/>
      <key-property column="PROVINCE" type="String" name="Province"/>
      <key-property column="LANG" type="String" name="Lang" />
    </composite-id>

    <timestamp
        column="MODIFY_DATE"
        name="ModifyDate"
        access="property"
        unsaved-value="null"/>

    <property name="ProvinceDescription" column="PROVINCE_TL"
type="String" not-null="true" />
    <property name="Description" column="CITY_TL" type="String" not-
null="true"/>
    <property name="SortOrder" column="SORT_ORDER" type="Int32" not-
null="false"/>

    <many-to-one name="City" class="City">
      <column name="CITY"/>
      <column name="PROVINCE"/>
    </many-to-one>
  </class>

</hibernate-mapping>

РАСПОЛОЖЕНИЕ:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="NHDAL"
                   namespace="NHDAL.Domain">

  <class name="Location" table="LOCATION">
    <id column="LOCATION" name="Name">
      <generator class="assigned" />
    </id>

    <timestamp
        column="MODIFY_DATE"
        name="ModifyDate"
        access="property"
        unsaved-value="null"/>

      </class>

</hibernate-mapping>

Может кто-то пролить свет на это и сказать мне, что должен запрос как выглядит в NHibernate?

1 Ответ

0 голосов
/ 02 октября 2013

Несвязанные сущности, вы можете присоединиться к ним с помощью hql или SQL, используя декартово произведение:

Здесь

...