2017-05-30 103 views
0

如何在hibernate中引用复合主键?休眠IdClass引用主复合键

IdClass(ProductItem.ProductItemPK.class) 
public class ProductItem implements Serializable{ 
    @Id 
    @Column(name="ITEM_ID") 
    private int itemId; 

    @Id 
    @JoinColumns({ 
     @JoinColumn(name="VENDOR_ID", referencedColumnName="VENDOR_ID"), 
     @JoinColumn(name="ORDER_ID", referencedColumnName="ORDER_ID") 
    }) 
    @ManyToOne 
    private ProductVendor productVendor; 

    public static class ProductItemPK implements Serializable{ 
       //How to reference ids?? 
    } 
} 

Product Vendor Class已经有一个组合键!

@IdClass(ProductVendor.ProductVendorPK.class) 
public class ProductVendor implements Serializable{ 
    @Id 
    @JoinColumn(name="VENDOR_ID") 
    @ManyToOne 
    private Vendor vendor; 

    @Id 
    @JoinColumn(name="ORDER_ID") 
    @ManyToOne 
    private Order order; 

    public static class ProductVendorPK implements Serializable{ 

     protected int vendor; 
     protected long order; 

     //equals and hashCode 

} 

回答

1

你映射了ProductVendorPK,就好像它是一个简单的现场:

public static class ProductItemPK implements Serializable { 
    private int itemId; 
    private ProductVendorPK productVendor; 

    // REST OF CLASS AS PER SPECS... 
}