【发布时间】:2014-07-07 11:47:06
【问题描述】:
我正在努力解决一个休眠映射问题,即在订单表的主键和产品购物车的复合键之间映射一对多关系,并带有一些额外的列
public class OrderDetails implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name="ORDERID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer orderId;
@Column(name="ORDER_DATE")
private Date orderDate= new Date();
//other fields and getter setter
.....
.....
Product Cart 表有一个复合键 CART ID 和 PRODUCT ID
@Entity
@Table(name="PRODUCT_CART")
@AssociationOverrides({
@AssociationOverride(name="pk.shopCart", joinColumns=@JoinColumn(name="CARTID")),
@AssociationOverride(name="pk.product", joinColumns=@JoinColumn(name="PRODUCTID"))
})
public class ProductCart implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@EmbeddedId
private ProductCartId pk = new ProductCartId();
@Column(name="QUANTITY")
private Integer selectedQuantity=1;
@Column(name="TOTAL")
private double total=0.0;
//other fields and getter setter
.....
.....
我尝试关注但没有工作
@Entity
@Table(name="PRODUCTCART_ORDERDETAILS")
@AssociationOverrides({
@AssociationOverride(name="pcoPK.orderDetails",joinColumns=@JoinColumn(name="ORDERID")) ,
@AssociationOverride(name="pcoPK.pk", joinColumns=
{@JoinColumn(name="pk.shopCart",referencedColumnName="CARTID"),
@JoinColumn(name="pk.product",referencedColumnName="PRODUCTID") }) })
public class ProductCartOrder implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2348674131019001487L;
@EmbeddedId
private ProductCartOrderId pcoPK = new ProductCartOrderId();
@Column(name="QUANTITY")
private Integer quantity;
@Column(name="PRICE")
private double price;
@Transient
public OrderDetails getOrderDetails(){
return getPcoPK().getOrderDetails();
}
public void setOrderDetails(OrderDetails orderDetails){
getPcoPK().setOrderDetails(orderDetails);
}
@Transient
public ProductCartId getProductCartId(){
return getPcoPK().getPk();
}
public void setProductCartId(ProductCartId pk){
getPcoPK().setPk(pk);
}
有人可以帮我实现这个吗?以下是错误信息
原因:org.hibernate.AnnotationException:非法尝试使用 mappedBy 关联定义 @JoinColumn:pcoPK.pk 在 org.hibernate.cfg.Ejb3JoinColumn.buildJoinColumn(Ejb3JoinColumn.java:152) 在 org.hibernate.cfg.Ejb3JoinColumn.buildJoinColumns(Ejb3JoinColumn.java:127) 在 org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1212) 在 org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:1841) 在 org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1878)
【问题讨论】:
标签: spring spring-mvc hibernate-mapping hibernate-onetomany