我有以下映射:
...
<set name="Tests" table="InstrumentTests">
<key column="InstrumentId" />
<composite-element class="InstrumentTest">
<property name="TestInstrumentId" not-null="true" />
<property name="OtherTestId" />
</composite-element>
</set>
我想使InstrumentId和TestInstrumentId唯一,因此表InstrumentTest不能包含:
InstrumentId TestInstrumentId OtherTestId
1 TEST1 ABC
1 TEST1 BCD <--- NO
2 TEST1 ABC <--- OK, different InstrumentId
也许我想要的是使用复合元素是不可能的,但是我应该如何映射它。
答案 0 :(得分:1)
好的,我找到了解决方案。我需要为InstrumentTest类实现Equals和GetHashCode。
在nHiberntate文档中明确说明:
注意:如果定义复合元素的ISet,则正确实现Equals()和GetHashCode()非常重要。