2011-01-19 35 views
1

我正試圖在JPA中進行映射。JPA映射錯誤 - 未在您的id類中提供足夠的元數據

@Entity 
public class Auction { 

    @Id 
    private Integer auctionId; 

    @OneToMany(mappedBy="auctionId") 
    @MapKey(name="auctionParamId") 
    private Map<AuctionParam, AuctionParamValue> values; 

} 

@Entity 
public class AuctionParam { 

    @Id 
    private Integer auctionParamId; 

    private String description; 

} 

@Entity 
public class AuctionParamValue { 

    @EmbeddedId 
    private AuctionParamValuePK pk; 

    private String value; 

} 

@Embeddable 
public class AuctionParamValuePK { 

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

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

} 

顯示的錯誤: -

.Error-Details:-Exception Description: Entity [class com.eaportal.domain.AuctionParamValue]
uses [class com.eaportal.domain.AuctionParamValuePK]
as embedded id class
whose access-type has been determined as [FIELD].
But [class com.eaportal.domain.AuctionParamValuePK]
does not define any [FIELD]. It is likely that you have not provided
sufficient metadata in your id class [class com.eaportal.domain.AuctionParamValuePK].

如果你拿出一個解決方案,請讓我知道。

由於提前 圖莎爾

回答

0

我覺得有你Auction類的一些錯誤。這是我認爲它應該

@Entity 
public class Auction { 

    @Id 
    private Integer auctionId; 

    @OneToMany(mappedBy="auction") // not auctionId 
    @MapKey(name="auctionParam") // not auctionParamId 
    private Map<AuctionParam, AuctionParamValue> values; 

} 

(註釋值必須與字段(或屬性對應),不列)

+0

感謝您的回答,我做了更正,但仍然得到相同的錯誤,任何其他指針? – tushar 2011-01-19 09:06:52

2

你不能用關係使用EmbeddedId。使用IdClass。

@Entity 
@IdClass(AuctionParamValuePK.class) 
public class AuctionParamValue { 

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

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

    @Basic 
    private String value; 

} 

public class AuctionParamValuePK { 

    private int auction; 
    private int auctionParam; 

} 
相關問題