Как мне записать это условие в отображение NHibernate HBM? - PullRequest
3 голосов
/ 24 августа 2010

Итак, я нахожусь на ускоренном курсе NHibernate, и вроде как наткнулся на приведенный ниже пример.

Предположим, у меня есть следующий класс .NET:

class A {
    int id;
    int type_var;
    List<B> someCollection;
}

class B {
    int id;
    string someText;
}

Я будувероятно, отобразите это как:

<class name="A" table="A">
    <id name="id" type="Int32">
         <generator type="identity" />
    </id>
    <property name="type_var" />
    <set name="someCollection" table="B">
         <key name="fk_aid" />
         <composite-element class="B">
              <property name="someText" />
         </composite-element>
    </set>
</class>

Моя проблема в том, как бы вы изменили это отображение, если бы мы были заинтересованы только в получении тех элементов B, которые принадлежат A (через fk_aid) И имеют значение type_var, равное A(предположим, что и A, и B имеют столбец type_var, но они явно не связаны).

Я думаю, что мне придется работать с чем-то вроде предложения where?

<set name="someCollection" table="B" where="type_var = type_var">

Как именно это можно сделать?

1 Ответ

0 голосов
/ 24 августа 2010

Я полагаю, что в этом случае может работать дополнительный выбор (при условии, что ваша RDMS поддерживает его);так что-то вроде:

<set name="someCollection" table="B" where="type_var = (SELECT A.type_var FROM A WHERE A.fk_aid = id)"> 

Мне не очень понятно, чего вы здесь добиваетесь;но вы можете рассмотреть отображение этого как свойство только для запроса;как обсуждено в этой статье .

...