ちょっと変わった問題が発生しました - 本当に単純なものが欠けているに違いありません! 特に 2 つのテーブルを用意します。
<class name="Proposal" table="Proposal">
<id name="Id" column="ProposalId">
<generator class="identity" />
</id>
<property name="QuotationNumber" column="QuotationNumber" access="nosetter.camelcase-underscore" />
<set name="DataItems" table="ProposalData" inverse="true" cascade="save-update" access="nosetter.camelcase-underscore" lazy="true">
<key column="ProposalId" />
<one-to-many class="Fortron.Fastr.Domain.Proposal.ProposalData, Fortron.Fastr.Domain"/>
</set>
</class>
と
<class name="ProposalData" table="ProposalData">
<id name="Id" column="ProposalDataId">
<generator class="identity" />
</id>
<many-to-one name="Proposal" column="ProposalId" class="Fortron.Fastr.Domain.Proposal.Proposal, Fortron.Fastr.Domain" />
</class>
以下のように、.HBM.XML ファイルに名前付きクエリがあると思います。
FROM Proposal MSP
JOIN FETCH MSP.DataItems Items
Proposal が ProposalData との 1 対多であることを考えると、NH はそれぞれの Proposal オブジェクトと、それぞれの Data をコレクションとしてロードする必要があります。残念ながら、Proposal ごとに複数の ProposalData があるため、結果が重複してしまいます。
私の理解では、これは問題にならないはずです。ProposalData が別のテーブルと 1 対多の関係にある場合、結果はデカルト積になり、上記のことが予想されます。
私は間違っていますか?誰でも光を当てることができますか?
ありがとう。