java中多对多的增删改查_双向多对一关系的增删改查

Person类:package com.bjsxt.hibernate;

import java.util.List;

import javax.persistence.CascadeType;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.ManyToOne;

@Entity

public class Person {

private Integer id;

private String name;

private Group1 group1;

@ManyToOne(cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})

public Group1 getGroup1() {

return group1;

}

public void setGroup1(Group1 group1) {

this.group1 = group1;

}

@Id

@GeneratedValue

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Group1类(数据库中group是关键字,也可以做一个映射):package com.bjsxt.hibernate;

import java.util.List;

import javax.persistence.CascadeType;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.OneToMany;

@Entity

public class Group1 {

private Integer id;

private String name;

private List persons;

@OneToMany(mappedBy="group1",fetch=FetchType.EAGER,cascade={CascadeType.MERGE,CascadeType.REFRESH,CascadeType.REMOVE})

public List getPersons() {

return persons;

}

public void setPersons(List persons) {

this.persons = persons;

}

@Id

@GeneratedValue

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

测试类:package com.bjsxt.hibernate;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

import org.junit.Test;

public class TestPerson_group {

private static SessionFactory sessionFactory;

@Test

public void testAddPerson(){

sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();

Person person1=new Person();

person1.setName("person1");

Person person2=new Person();

person2.setName("person2");

Group1 group1=new Group1();

group1.setName("group1");

List persons=new ArrayList();

persons.add(person1);

persons.add(person2);

person1.setGroup1(group1);

person2.setGroup1(group1);

group1.setPersons(persons);

Session session=sessionFactory.getCurrentSession();

session.beginTransaction();

session.persist(group1);

session.getTransaction().commit();

}

@Test

public void deleteGroup1(){

sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();

Session session=sessionFactory.getCurrentSession();

session.beginTransaction();

Group1 group1=(Group1) session.get(Group1.class, 1);

List persons=group1.getPersons();

Iterator iterator=persons.iterator();

if(iterator.hasNext()){

Person person=iterator.next();

System.out.println(person.getName());

person.setGroup1(null);

}

session.update(group1);

/*

* 一定要先update一下group1,

* 将group1的每一个user的group设置为null,同步到数据库,否则group1对应于person的关联关系没有打破*/

group1.setPersons(null);

session.delete(group1);

session.getTransaction().commit();

System.out.println(group1.getName());

}

@Test

public void deleteUser(){

sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();

Session session=sessionFactory.getCurrentSession();

session.beginTransaction();

/*Person person=(Person) session.get(Person.class, 3);

person.setGroup1(null);

session.delete(person);*/

/*

* 或者直接写HQL删除*/

session.createQuery("delete from Person p where p.id=4").executeUpdate();

session.getTransaction().commit();

}

@Test

public void updatePerson(){

sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();

Session session=sessionFactory.getCurrentSession();

session.beginTransaction();

Person person=(Person) session.get(Person.class, 1);

person.setGroup1(null);

session.update(person);

session.getTransaction().commit();

}

@Test

public void updateGroup1(){

sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();

Session session=sessionFactory.getCurrentSession();

session.beginTransaction();

Group1 group1=(Group1) session.get(Group1.class, 1);

group1.setPersons(null);

session.update(group1);

session.getTransaction().commit();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值