2012-03-22 11 views
7

Estoy tratando de modelar esta relación siguiendo este enlace http://www.javaworld.com/javaworld/jw-01-2008/images/datamodel.gifla correlación de atributos extra en una tabla de unión APP 2

Es la costumbre de muchos a muchos entre el orden y los productos pero no sé cómo agregar las columnas adicionales en el Únete a la mesa

@Entity 
@Table(name = "Orders") 
public class Order { 
    @ManyToMany(cascade = CascadeType.ALL) 
    @JoinTable(name = "ORDER_LINES", joinColumns = { @JoinColumn(name = "ORDER_ID") }, inverseJoinColumns = { @JoinColumn(name = "PROD_ID") }) 
    private Set<Product> products; 
} 

@Entity 
@Table(name="PRODUCTS") 
public class Product { 
    @ManyToMany(mappedBy="products") 
    private Set<Order> orders; 
} 

Cómo agregar el atributo Únete tabla adicional en JPA 2.0?

Gracias

Respuesta

21

no existe el concepto de tener atributo adicional persistente en relación en JPA (2.0). Es por eso que la relación con la propiedad es en realidad una entidad intermedia.

Tanto para las entidades de pedido como para las de producto, necesita una relación de uno a muchos con la nueva entidad. Debido a la relación bidireccional, la nueva entidad tendrá relaciones de muchos a uno con el pedido y el producto.

usted necesita ir para algo como esto (muestra sólo las relaciones, ID y otras asignaciones despojado):

@Entity 
@Table(name="order_item") 
public class OrderItem { 
    @ManyToOne 
    private Order order; 
    @ManyToOne 
    private Product product; 
} 

@Entity 
public class Order { 
    @OneToMany (mappedBy = "order") 
    private Set<OrderItem> orderItems; 
} 

@Entity 
public class Product { 
    @OneToMany(mappedBy = "product") 
    private Set<OrderItem> orderItems; 
} 
+0

Gracias .. me dieron su punto. ¿Podría solicitar por favor para ayudarme en mi otra pregunta? http://stackoverflow.com/questions/9835124/jpa-manytomany-join-table-has-all-attributes-as-pk –

Cuestiones relacionadas