同じテーブルにマップされたこれらの2つのクラスを考えてみましょう。 1つはmutable = "false"で読み込み専用です。同じテーブルにマップされた2つのクラス(読み取り専用の1つ)は、正しい順序でなければなりませんか?
<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マッピングを移動した場合はないは正しく生成しません。私がそれを上に残すと、それは働く。
これは仕様です。 schema-action = "none"がtable_nameに固執し、後で同じテーブルへのマッピングがスキーマを生成しないように見えます。
私はこのようにしています。私は、ファンダーテーブルへの外部キーを持つContractという別のクラスがあるためです。しかし、私は、契約オブジェクトから参照するときに、すべてのファインダ列を必要としません。
<many-to-one name="funder_simple" column="funder_id" foreign-key="FK_contract_funder_id" fetch="join" />
FunderSimpleからFunderを継承しません。
外部キーテーブルから列のサブセットのみをフェッチする方法はありますか?外部キーを設定するには、多対1が唯一の方法ですか?そのような状況では、バージョン2.1.0.4000
興味深い...しかし:
この
は次のように行われます。私は多対1を重いFunderオブジェクトに戻して、何とかFunderSimpleをロードするだけにマップしますか? – dotjoe「Funder」はあなたのエンティティなので、契約は「Funder」との関係を持つ必要があります。 FunderSimpleは、「ファンダーズ」のリストを表示するためのヘルパー/コンテナの一種としてのみ表示されています.FunderSimpleはフルファンダースエンティティを持つ必要はありません。 なぜContractインスタンスを取得するときに 'FunderSimple'インスタンスを取得したいのですか? –
私はFunderの不要な外部キー(create_byやlast_update_byなど)のすべてをStaffテーブルに追加する必要はありません。その結果、Staffテーブルのいくつかのキーの結合が増えます。 FunderSimpleフィールドは、契約に関する限り私が必要とする唯一のフィールドです。契約を取り出すたびに、これらの不要なテーブルに参加することがパフォーマンスを傷つけることはないだろうか。しかし、私はそれを回避し、私が必要とするものだけを照会する方法があることを望んでいました。 – dotjoe