1

エンティティ オブジェクトが MapKey を持つ Map コレクションを同じテーブルの列として持つ必要があるという要件があります。エンティティ オブジェクト Fund は、関連する Funds を持つことができ、各 Fund は一意の Fund タイプを持ちます。FundType が列挙型クラスである Map として、関連する資金が必要です。Hibernate は relatedFunds をテーブルに保持していません。親ファンドのみが挿入されます。同じエンティティオブジェクトを次に示します。

@Entity
@Table(name="T_FUND")
public class Fund {

    @Id
    @GeneratedValue
    protected Long id;

    @Column(name="FUND_TYPE", nullable = false)
    @Enumerated(EnumType.STRING)    
    protected FundType fundType;

    @OneToMany(mappedBy="mainFund", cascade = {CascadeType.ALL})
    @MapKey(name="fundType")    
    protected Map<FundType,Fund> relatedFunds;

    @ManyToOne(targetEntity = FundImpl.class,cascade = {CascadeType.ALL})
    protected Fund mainFund;

    @Column(name="FULL_NAME", nullable = false, length = 255)
    protected String fullName;

 }
4

0 に答える 0