在实际开发过程中,JPA多对一单向关联是使用最多的关联方式。
下面是订单与订单项的配置关系。
订单(Order):一的一方,不进行任何配置
1.
2.
3.
(name="orders")
4.
public class Order {
5.
6.
7.
(length=40)
8.
private String orderId; //订单ID
9.
10.
(nullable=false)
11.
private Float amount = 0f; //总价
12.
13.
private Set<OrderItem> items;//订单项(可有可无,查询订单时,无法查出此项)
14.
15.
public String getOrderId() {
16.
return orderId;
17.
}
18.
19.
public void setOrderId(String orderId) {
20.
this.orderId = orderId;
21.
}
22.
public Float getAmount() {
23.
return amount;
24.
}
25.
26.
public void setAmount(Float amount) {
27.
this.amount = amount;
28.
}
29.
30.
public Set<OrderItem> getItems() {
31.
return items;
32.
}
33.
34.
public void setItems(Set<OrderItem> items) {
35.
this.items = items;
36.
}
37.
订单项(OrderItem):多的一方,进行ManyToOne关联配置。
1.
2.
3.
public class OrderItem {
4.
5.
6.
//ID自增长
7.
private Integer id;
8.
9.
(length=40,nullable=false)
10.
private String productName;
11.
12.
(nullable=false)
13.
private Float sellPrice;
14.
15.
/*
16.
* @JoinColumn(name="order_id") 数据库中外键的名字为order_id
17.
*/
18.
(cascade={CascadeType.MERGE,CascadeType.REFRESH},
19.
fetch=FetchType.EAGER,optional=false)
20.
(name="order_id")
21.
private Order order;
22.
23.
public Integer getId() {
24.
return id;
25.
}
26.
27.
public void setId(Integer id) {
28.
this.id = id;
29.
}
30.
public String getProductName() {
31.
return productName;
32.
}
33.
34.
public void setProductName(String productName) {
35.
this.productName = productName;
36.
}
37.
public Float getSellPrice() {
38.
return sellPrice;
39.
}
40.
41.
public void setSellPrice(Float sellPrice) {
42.
this.sellPrice = sellPrice;
43.
}
44.
45.
public Order getOrder() {
46.
return order;
47.
}
48.
49.
public void setOrder(Order order) {
50.
this.order = order;
51.
}
52.