我有一個Price對象,由兩個MonetaryValues組成,其中一個MonetaryValue由一個金額和一個貨幣組成。Hibernate註釋,指定要持久化的組件的哪些成員
如果我配置OR映射的XML的方式,我可以做到這一點
<component name="baseAmount" lazy="false" class="MonetartyValue">
<property name="amount" column="baseAmount" precision="20" scale="2" not-null="true" />
<!-- <property name="currency" column="baseCurrency" not-null="true" /> -->
</component>
<component name="originalAmount" lazy="false" class="MonetaryValue">
<property name="amount" column="originalAmount" precision="20" scale="2" not-null="true" />
<property name="currency" column="originalCurrency" not-null="true" />
</component>
即選擇不來持久baseCurrency元素(因爲它是隱含的,總是相同的)。
是否有可能以註釋配置的方式實現這一點?
如果我只是做這樣的,並離開了baseCurrency屬性,它總要被堅持着,具有默認名稱。
@Embedded
@AttributeOverrides ({
@AttributeOverride(name="amount", column= @Column(name="baseAmount"))
})
private MonetaryValue baseAmount;
@Embedded
@AttributeOverrides ({
@AttributeOverride(name="amount", column= @Column(name="originalAmount")),
@AttributeOverride(name="currency", column= @Column(name="originalCurrency"))
})
private MonetaryValue originalAmount;
它也不可能使MonetaryValue短暫的財產的貨幣,因爲那將永遠不會被保存。
那麼,是否有可能通過註釋來實現上述XML映射呢?
正如mtpettyp建議,我想存儲兩個MonetaryValue在一個表,只用三列。正如專家在他的評論中所暗示的那樣,你完全可以通過繼承來解決問題。但是,再次,您也可以使用自定義的.hbm.xml映射文件來解決此問題,而不是使用註釋。我不確定哪一個更準確,但我仍然好奇是否可以用兩種方法解決...
他試圖在他的實體中嵌入兩個MonetaryValue對象,但只保留三列 - baseAmount(來自baseAmount字段)以及originalAmount和originalCurrency(來自originalAmount字段) – mtpettyp 2009-05-22 18:11:58