我正试图在此链接http://www.javaworld.com/javaworld/jw-01-2008/images/datamodel.gif
之后对此关系进行建模它是Order和Products之间通常的多对多关系,但我不知道如何在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;
}
如何在JPA 2.0中添加Join Table extra属性?
由于
答案 0 :(得分: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;
}