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();
}
上一篇:mysql查询班级以及相关的上课教师(列合并)


下一篇:robot framework笔记(介绍+基础关键字)