0

注文テーブルの主キーと製品カートの複合キーの間の1対多の関係をいくつかの余分な列でマッピングするという休止状態のマッピングの問題に苦しんでいます

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: mappingBy アソシエーションを持つ @JoinColumn を定義しようとする不正な試み: org.hibernate.cfg.Ejb3JoinColumn.buildJoinColumn(Ejb3JoinColumn.java:152) の org.hibernate.cfg.Ejb3JoinColumn の pcoPK.pk. org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1212) の buildJoinColumns(Ejb3JoinColumn.java:127) org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:1841) の org.hibernate.cfg.AnnotationBinder .bindId(AnnotationBinder.java:1878)

4

1 に答える 1