2012-11-23 69 views
1

我有一個類,如下所示:「NULL不允許」以兩個@一對多的同一個表

@Entity 
public class MarketSettlement extends BaseEntity { 

    @OneToMany(cascade=CascadeType.ALL) 
    private Set<FinancialTransaction> commissionPaid; 

    @Setter @OneToMany(cascade=CascadeType.ALL) 
    private Set<FinancialTransaction> dividends; 
} 

所以,市場結算可能產生的股息,並且它可能有佣金支付。

但是,它是有效的結算產生股息,和不是支付任何佣金 - 在這種情況下commissionPaid收集是空的。

然而,從該生成的表格需要BOTH藏品填充:

+------------------------------+------------+------+-----+---------+-------+ 
| Field      | Type  | Null | Key | Default | Extra | 
+------------------------------+------------+------+-----+---------+-------+ 
| MarketSettlement_id   | bigint(20) | NO | PRI | NULL |  | 
| dividends_transactionId  | bigint(20) | NO | UNI | NULL |  | 
| commissionPaid_transactionId | bigint(20) | NO | PRI | NULL |  | 
+------------------------------+------------+------+-----+---------+-------+ 

因此,當我嘗試堅持記錄沒有任何交易,我得到一個DataIntegrtityViolationException:

org.springframework.dao.DataIntegrityViolationException:NULL不允許 列「COMMISSIONPAID_TRANSACTIONID」;

什麼是正確的方式來配置此,允許股息交易,但沒有佣金交易?

+1

您可以使用@JoinTable爲支付的佣金和股息組件分配不同的表格。 – dinukadev

+0

@dinukadev謝謝......這就是我最終做的。介意發佈這個答案,以便我可以接受? –

+0

完成。並且很高興知道我們都同意解決方案:) – dinukadev

回答

0

您可以使用@JoinTable爲支付的佣金和股息組件分配不同的表格。

相關問題