JPA一对多单向关联

来源:互联网 发布:java电商高并发视频 编辑:程序博客网 时间:2024/05/30 23:11

在实际开发过程中,JPA一对多的单向关联使用的情况并不多。

下面是订单与订单项的配置。

订单(Order):一的一方,进行OneToMany配置

注意:@OneToMany在默认情况下,Hibernate会把一对多当成多对多的一种特殊情况!结果就是会帮我们生成一张中间表,所以注意要写@JoinColumn(name="")注解,因为在数据库中,不管是一对多还是多对一,都是在多的一方添加一的一个外键,所以这个jioncolumn的name值一般写成一的外键字段名。

@Entity@Table(name="orders")public class Order {        @Id    @Column(length=40)    private String orderId;        //订单ID        @Column(nullable=false)    private Float amount = 0f;    //总价    @OneToMany(cascade={CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE},            fetch=FetchType.LAZY,mappedBy="order")    @JoinColumn(name="order_id")    private Set<OrderItem> items = new HashSet<OrderItem>();        public String getOrderId() {        return orderId;    }        public void setOrderId(String orderId) {        this.orderId = orderId;    }    public Float getAmount() {        return amount;    }        public void setAmount(Float amount) {        this.amount = amount;    }    public Set<OrderItem> getItems() {        return items;    }    public void setItems(Set<OrderItem> items) {        this.items = items;    }
订单项(OrderItem):多的一方,不需要做任何配置

@Entitypublic class OrderItem {@Id@GeneratedValue//ID自增长private Integer id;@Column(length=40,nullable=false)private String productName;@Column(nullable=false)private Float sellPrice;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}public Float getSellPrice() {return sellPrice;}public void setSellPrice(Float sellPrice) {this.sellPrice = sellPrice;}public Order getOrder() {return order;}public void setOrder(Order order) {this.order = order;}

0 0
原创粉丝点击