在连接表JPA 2中映射额外属性

Mar*_*ada 7 jpa-2.0

我试图通过这个链接模拟这种关系http://www.javaworld.com/javaworld/jw-01-2008/images/datamodel.gif

它是订单和产品之间通常的多对多关系,但我不知道如何在Join表中添加额外的列.

@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;
}
Run Code Online (Sandbox Code Playgroud)

如何在JPA 2.0中添加Join Table extra属性?

谢谢

Mik*_*unu 22

在JPA(2.0)中没有关于具有附加持久属性的概念.这就是为什么与财产的关系实际上是中间实体.

从订单和产品实体,您需要与新实体的一对多关系.由于双向关系,新实体将与订单和产品具有多对一关系.

你需要去做这样的事情(只显示关系,id和其他映射被剥离):

@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;
}
Run Code Online (Sandbox Code Playgroud)