Java JPA映射错误-id类中未提供足够的元数据
我正在尝试用JPA做映射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
@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;
}
谢谢你的回答,我做了更正,但仍然得到相同的错误,还有其他指针吗?我现在面临这个问题。有人知道答案吗?