2014-10-28 78 views
0

我想打2個的外鍵主鍵使用Hibernate實體註釋: look at the picture please **如何使用兩個外鍵作爲Hibernate的實體註釋主鍵

  • 我怎樣才能讓這個兩洋鍵「comID」和「reference」作爲 帶有Hibernate註釋的LigneCommande表的主鍵! 謝謝:)

我想這個代碼,但它沒有工作:

級 「Produit」:

public class Produit implements Serializable{ 

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinTable(name = "LigneCommande", catalog = "mkyongdb", joinColumns = { 
      @JoinColumn(name = "reference", nullable = false, updatable = false) }, 
      inverseJoinColumns = { @JoinColumn(name = "commande_id", 
        nullable = false, updatable = false) }) 
    private List<Commande> commande; 


    public List<Commande> getCommande() { 
     return commande; 
    } 

    public void setCommande(List<Commande> commande) { 
     this.commande = commande; 
    } 
} 

級 「COMMANDE」:

@Entity 
public class Commande implements Serializable{ 

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "commande") 
    private List<Produit> produit; 

public List<Produit> getProduit() { 
     return produit; 
    } 

    public void setProduit(List<Produit> produit) { 
     this.produit = produit; 
    } 
} 

最重要的是,我沒有任何異常或錯誤!

回答

1

這是解決方案:

public class LigneCommande implements Serializable { 

@EmbeddedId 
    protected LigneCommandePK ligneCommandePK; 

    @Column(name = "quantite") 
    private int quantite; 

    @Column(name = "status") 
    private String status; 
    @JoinColumn(name = "produit_id", referencedColumnName = "id", insertable = false, updatable = false) 
    @ManyToOne(optional = false) 
    private Produit produit; 
    @JoinColumn(name = "commande_id", referencedColumnName = "id", insertable = false, updatable = false) 
    @ManyToOne(optional = false) 
    private Commande commande; 
} 

了該類 「Produit」:

@Entity 
@Table(name = "produit") 
public class Produit implements Serializable {@OneToMany(cascade = CascadeType.ALL, mappedBy = "produit") 
    private Collection<LigneCommande> ligneCommandeCollection; 
} 

這是關聯類:

@Embeddable 
public class LigneCommandePK implements Serializable { 
    @Basic(optional = false) 
    @Column(name = "commande_id") 
    private int commandeId; 
    @Basic(optional = false) 
    @Column(name = "produit_id") 
    private int produitId; 
} 

而且它的工作原理,看圖片: enter image description here