JPA联合主键并做从表外键

本文探讨了如何在Java持久化API(JPA)中设置联合主键,并将其作为从表的外键进行管理。通过实例解析了JPA配置联合主键和外键的步骤,详细介绍了相关数据库关系的建立和操作。

1. 数据库关系



@Embeddable
public class BasicOrderPK implements Serializable {
        ...
        // 联合主键的两个字段单独生成一个可嵌入的对象
	@Column(name="order_id")
	private int orderId;

	@Column(name="goods_code")
	private int goodsCode;
        ...
}


@Entity
@Table(name="basic_order")
@NamedQuery(name="BasicOrder.findAll", query="SELECT b FROM BasicOrder b")
public class BasicOrder implements Serializable {
	private static final long serialVersionUID = 1L;

	@EmbeddedId
        // 注入主键对象
	private BasicOrderPK id;

	//bi-directional many-to-one association to BasicUser
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="user_name")
	private BasicUser basicUser;

	//bi-directional many-to-one association to OrderDetail
	@OneToMany(mappedBy="basicOrder")
	private List<OrderDetail> orderDetails;
}


@Entity
@Table(name="order_detail")
@NamedQuery(name="OrderDetail.findAll", query="SELECT o FROM OrderDetail o")
public class OrderDetail implements Serializable {
        .....
	//bi-directional many-to-one association to BasicOrder
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumns({
                // 分别匹配主表联合主键的两个字段
		@JoinColumn(name="order_id", referencedColumnName="order_id"),
		@JoinColumn(name="goods_code", referencedColumnName="goods_code")
		})
	private BasicOrder basicOrder;
....
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值