Hibernate:JPA的一对多操作

实体类Cla.java

@Entity
@Table(name = "cla")
public class Cla {

	@Id
	@Column(name = "cla_id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer claId;
	@Column(name = "cla_name")
	private String claName;
	@OneToMany(targetEntity = Stu.class, mappedBy = "cla", cascade = CascadeType.ALL, fetch = FetchType.LAZY) // mappedBy="对方的属性":表示两个表关系之间的控制权交给对方
	private Set<Stu> stu = new HashSet<Stu>(0);

实体类Stu.java

@Entity
@Table(name = "stu")
public class Stu {

	@Id
	@Column(name = "stu_id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer stuId;
	@Column(name = "stu_name")
	private String stuName;
	@ManyToOne(targetEntity = Cla.class)
	// joinColumns:建立主表与从表外键关系
	// name属性:从表的外键字段名
	// referencedColumnName属性:主表的主键字段名
	@JoinColumn(name = "cla_id", referencedColumnName = "cla_id")
	private Cla cla;

一对多保存

public void save() {
	Cla cla = new Cla();
	cla.setClaName("体育生");
	Stu stu = new Stu();
	stu.setStuName("赵云");

	cla.getStu().add(stu);
	stu.setCla(cla);

	EntityManager entityManager = JPAUtils.createEntityManager();
	EntityTransaction entityTransaction = entityManager.getTransaction();
	entityTransaction.begin();
	entityManager.persist(cla);
	entityManager.persist(stu);
	entityTransaction.commit();
	entityManager.close();
}

级联更新

public void update() {
	Stu stu = new Stu();
	stu.setStuName("吕布");

	EntityManager entityManager = JPAUtils.createEntityManager();
	EntityTransaction entityTransaction = entityManager.getTransaction();
	entityTransaction.begin();
	Cla cla = entityManager.find(Cla.class, 1);
	cla.getStu().add(stu);
	stu.setCla(cla);
	entityTransaction.commit();
	entityManager.close();
}

级联删除

public void remove() {
	EntityManager entityManager = JPAUtils.createEntityManager();
	EntityTransaction entityTransaction = entityManager.getTransaction();
	entityTransaction.begin();
	Cla cla = entityManager.find(Cla.class, 1);
	entityManager.remove(cla);
	entityTransaction.commit();
	entityManager.close();
}

对象导航查询

public void query() {
	EntityManager entityManager = JPAUtils.createEntityManager();
	EntityTransaction entityTransaction = entityManager.getTransaction();
	entityTransaction.begin();
	Cla cla = entityManager.find(Cla.class, 1);
	System.out.println(cla);
	Set<Stu> stus = cla.getStu();
	System.out.println(stus);
	entityTransaction.commit();
	entityManager.close();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值