Java JPA映射错误-id类中未提供足够的元数据

Java JPA映射错误-id类中未提供足够的元数据,java,spring,jpa,eclipselink,jpa-2.0,Java,Spring,Jpa,Eclipselink,Jpa 2.0,我正在尝试用JPA做映射 @Entity public class Auction { @Id private Integer auctionId; @OneToMany(mappedBy="auctionId") @MapKey(name="auctionParamId") private Map<AuctionParam, AuctionParamValue> values; } @Entity public class Aucti

我正在尝试用JPA做映射

@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;

}
@实体
公开拍卖{
@身份证
私有整数拍卖ID;
@OneToMany(mappedBy=“拍卖ID”)
@MapKey(name=“auctionParamId”)
私有地图值;
}
@实体
公共类拍卖参数{
@身份证
私有整数auctionParamId;
私有字符串描述;
}
@实体
公共类AuctionParamValue{
@嵌入ID
私人拍卖ParamValuePK pk;
私有字符串值;
}
@可嵌入
公共类拍卖ParamValuePK{
@许多酮
@JoinColumn(name=“auctionId”)
私人拍卖;
@许多酮
@JoinColumn(name=“auctionParamId”)
私人拍卖参数拍卖参数;
}
显示错误:-

.错误详细信息:-异常说明: 实体[类别] com.eaportal.domain.AuctionParamValue]
使用[类别] com.eaportal.domain.AuctionParamValuePK]
作为嵌入式id类
谁的访问类型 已确定为[字段]。
但是 [课堂 com.eaportal.domain.AuctionParamValuePK]
不定义任何[字段]。它是 很可能您没有提供
id类中有足够的元数据 [课堂 com.eaportal.domain.AuctionParamValuePK]

如果你有解决办法,请告诉我

提前谢谢
Tushar

我想你的
拍卖
课上有一些错误。我觉得应该是这样的

@Entity
public class Auction {

    @Id
    private Integer auctionId;

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

}
@实体
公开拍卖{
@身份证
私有整数拍卖ID;
@OneToMany(mappedBy=“auction”)//非auctionId
@MapKey(name=“auctionParam”)//不是auctionParamId
私有地图值;
}

(注释值必须与字段(或属性)相对应,而不是与列相对应)

不能将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;

}

谢谢你的回答,我做了更正,但仍然得到相同的错误,还有其他指针吗?我现在面临这个问题。有人知道答案吗?