2015-04-19 1 views
0

Je développe une application Web que le client appelle à un employé et il a passé une commande du client au système.Comment faire une clé primaire composite en utilisant la valeur générée automatiquement et une clé étrangère en utilisant hibernate et le printemps MVC

De mes ER diagram, la classe OrderDetail contient une clé primaire composite orderId et productId. En outre, il contient orderedQuentity colonne. Ce que je veux, c'est quand le client passe une commande, il doit avoir quels produits il/elle a commandé et la quantité de chaque produit qu'il commande et qui passent la commande (l'employé) .....

Mais je Je pense que dans ma façon de le faire, la classe orderDetail ne peut contenir que la liste du produit, pas la quantité de chaque produit.

Comment faire ce que je veux ??

Voici mes classes d'entités que j'essaie de mettre en œuvre.

Classe client:

@Entity 
public class Customer { 

    @Id 
    @GeneratedValue 
    private Integer id; 
    private String firstName; 
    private String lastName; 
    private String companyName; 
    private Integer teleponeNumber; 

    @OneToMany(mappedBy="customer") 
    private List<OrderDetail> orders; 

} 

Classe de produit:

@Entity 

public class Product { 

    @Id 
    @GeneratedValue 
    private Integer id; 
    private String name; 
    private Integer availableQuantity; 
    private String unitType; 
    private Integer unitPrice; 
    private String description; 

    @ManyToMany(mappedBy="products") 
    private List<OrderDetail> details; 

}

ordre Classe:

@Entity 

public class OrderDetail { 

    @Id 
    @GeneratedValue 
    private Integer orderId; 
    private Integer orderedQuentity;  
    private String customerAddress; 
    private String shipingAddress; 
    private String orderStatus; 

    @ManyToOne 
    @JoinColumn(name="Employee_Id") 
    private Employee employee; 

    @ManyToOne 
    @JoinColumn(name="customer_id") 
    private Customer customer; 

    @ManyToMany 
    @JoinTable 
    private List<Product> products; 
} 

d'employés:

@Entity 
public class Employee { 

    @Id 
    @GeneratedValue 
    private Integer id; 
    private String firstName; 
    private String lastName; 
    private String designation; 
    private String email; 
    private String password; 

    @OneToMany(mappedBy="employee") 
    private List<OrderDetail> orders; 
} 

Répondre

0

du client vous OrderDetail avez une relation OneToMany, je vous suggère de créer un joinTable

Ainsi, l'entité client ressemblera:

@Entity 
public class Customer { 

@Id 
@GeneratedValue 
private Integer id; 
private String firstName; 
private String lastName; 
private String companyName; 
private Integer teleponeNumber; 

@OneToMany(mappedBy="customer") 
@JoinTable(name = “customer_order_details”, joinColumns= { @JoinColumn(name = “customer_id”, referencedColumnName=”id”) }, inverseJoinColumns = { @JoinColumn(name = “order_id”, referencedColumnName = “id”) }) 
private List<OrderDetail> orders; 

} 

La même situation dans l'entité des employés:

@Entity 
public class Employee { 

@Id 
@GeneratedValue 
private Integer id; 
private String firstName; 
private String lastName; 
private String designation; 
private String email; 
private String password; 

@OneToMany(mappedBy="employee") 
@JoinTable(name = “employee_order_details”, joinColumns= {  @JoinColumn(name = “employee_id”, referencedColumnName=”id”) }, inverseJoinColumns = { @JoinColumn(name = “order_id”, referencedColumnName = “id”) }) 

private List<OrderDetail> orders; 

}

Et entité de produit:

@Entity 

public class Product { 

@Id 
@GeneratedValue 
private Integer id; 
private String name; 
private Integer availableQuantity; 
private String unitType; 
private Integer unitPrice; 
private String description; 

@ManyToMany(mappedBy="products") 
@JoinTable(name = “product_order_details”, joinColumns= { @JoinColumn(name = “product_id”, referencedColumnName=”id”) }, inverseJoinColumns = { @JoinColumn(name = “order_id”, referencedColumnName = “id") }) 
private List<OrderDetail> details;