2011-01-14 76 views
1

我有一個情況我的數據庫表像之下,我想知道如何擁有JPA映射這種 表,espacially對於不具有主鍵ID的auction_param_values問題在JPA測繪圖

表名拍賣與主鍵auction_id

表名* auction_param *與主鍵auction_param_id

AUCTIO_PARAM用於存儲參數的細節,例如Start_DateEnd_Date

auction_param_id | auction_param_desc 

1    | start date 
2    | end_date 

表名稱auction_param_values

它存儲參數有關Auction的實際值。

表看起來像: -

auction_id | auction_param_id | auction_param value | 

    1  |  2   |  2011-01-15  | 

如何將實體類認準auction_param_values?是否有任何指示我們如何設計 模式來支持JPA(我們使用Eclipselink作爲提供者)。

如果需要我可以提供更多的細節。

回答

2

不知道如果我理解正確的,但是,這可能是你所需要的:

@Entity 
public class Auction { 

    @Id 
    private Integer id; 

    @OneToMany(mappedBy="pk.auction") 
    @MapKey(name="pk.auctionParam") 
    private Map<AuctionParam, AuctionParamValue> values; 

} 

@Entity 
public class AuctionParam { 

    @Id 
    private Integer id; 

    private String description; 

} 

@Entity 
public class AuctionParamValue { 

    @EmbeddedId 
    private AuctionParamValuePK pk; 

    private String value; 

} 

@Embeddable 
public class AuctionParamValuePK { 

    @ManyToOne 
    @JoinColumn(name="auction_id") 
    private Auction auction; 

    @ManyToOne 
    @JoinColumn(name="auctionparam_id") 
    private AuctionParam auctionParam; 

} 
+0

感謝您reply.I實現,但是我發現你所建議的方式,是否顯示error.And我試圖解決它但我無法弄清楚.Error-Details:-Exception描述:實體[類com.eaportal.domain.AuctionParamValue]使用[class com.eaportal.domain.AuctionParamValuePK]作爲嵌入式id類,其訪問類型已被確定爲[FIELD]。但[類com.eaportal.domain.AuctionParamValuePK]沒有定義任何[FIELD]。很可能你沒有在你的id類[class com.eaportal.domain.AuctionParamValuePK]中提供足夠的元數據。 – tushar 2011-01-18 12:48:10