JPA一对多单向关联

在实际开发过程中,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):多的一方,不需要做任何配置

@Entity
public 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;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值