Рассмотрим эти два класса, сопоставленные с одной и той же таблицей. Один только для чтения через mutable = "false".
<class name="Funder" table="funder">
<id name="id">
<generator class="identity" />
</id>
<property name="funder_name" />
<property name="contact_name" />
<property name="addr_line_1" />
<property name="addr_line_2" />
<property name="addr_line_3" />
<property name="city" />
<many-to-one name="state" column="state_id" foreign-key="FK_funder_state_id" fetch="join" />
<property name="zip_code" length="10" />
<property name="phone_number" length="30" />
<property name="create_dt" update="false" not-null="true" />
<many-to-one name="create_by" column="create_by" not-null="true" update="false" foreign-key="FK_funder_create_by" fetch="join" />
<property name="last_update_dt" insert="false" />
<many-to-one name="last_update_by" insert="false" foreign-key="FK_funder_last_update_by" fetch="join" />
</class>
<class name="FunderSimple" table="funder" schema-action="none" mutable="false">
<id name="id">
<generator class="identity" />
</id>
<property name="funder_name" />
<property name="contact_name" />
<property name="phone_number" />
</class>
Если я перемещу отображение FunderSimple до отображения Funder, моя схема не сгенерирует правильно. Если я оставлю это как выше, это работает.
Это задумано? Кажется, что schema-action = "none" придерживается table_name, и последующие сопоставления с той же таблицей не будут генерировать схему.
Я делаю это так, потому что у меня есть другой класс с именем Contract, у которого есть внешний ключ к таблице спонсоров. Однако мне не нужны все столбцы спонсора при обращении к объекту контракта.
<many-to-one name="funder_simple" column="funder_id" foreign-key="FK_contract_funder_id" fetch="join" />
Funder не наследует от FunderSimple.
Должен ли я использовать другую технику для извлечения только подмножества столбцов из таблицы внешнего ключа? Много-к-одному - единственный способ настроить внешний ключ?
с использованием версии 2.1.0.4000