1

我有一个如下所示的类:

@Entity
public class MarketSettlement extends BaseEntity {

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

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

因此,市场结算可能会产生股息,并且可能已支付佣金。

但是,结算产生股息并且支付任何佣金是有效的 - 在这种情况下,commissionPaid集合是空的。

但是,由此生成的表需要填充两个集合:

+------------------------------+------------+------+-----+---------+-------+
| 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”;

什么是正确的配置方法,允许股息交易,但不允许佣金交易?

4

1 回答 1

0

您可以使用@JoinTable 为您支付的佣金和股息部分设置单独的表格。

于 2012-11-26T05:27:45.343 回答