Hibernate Annotation 多对一 双向

来源:互联网 发布:销售数据的类别ppt 编辑:程序博客网 时间:2024/05/16 08:27

 

Group.java 实体文件

package com.model;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="t_group")public class Group {private int id;private String name;private Set<User> users = new HashSet<User>();@OneToMany( cascade={CascadeType.ALL},mappedBy="group",fetch=FetchType.EAGER)public Set<User> getUsers() {return users;}public void setUsers(Set<User> users) {this.users = users;}@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

 

===========================================================================================================================

User.java 实体文件

package com.model;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToOne;import javax.persistence.Table;@Entity@Table(name="t_user")public class User {private int id;private String name;private Group group;@ManyToOne(cascade={CascadeType.ALL})public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}@Id()@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}


================================================================================================================================

这是JUnit测试类,UG.JAVA

 

import javax.persistence.CascadeType;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.tool.hbm2ddl.SchemaExport;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import com.model.*;public class UG {private static SessionFactory sessionFactory = null;@BeforeClasspublic static void beforeClass(){sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();new SchemaExport(new AnnotationConfiguration().configure()).create(false,true);}@Testpublic void testDeleteUser(){testSaveGroup();Session session = sessionFactory.getCurrentSession();session.beginTransaction();//User u = (User) session.load(User.class,1);//load 为代理// get为直接//session.delete(g);//u.setGroup(null); cascade为 CascadeType.ALL ,会删除参照。session.createQuery("select * from User u where u.id=1").executeUpdate();//HQL。'User'为类名session.getTransaction().commit();}/*@Testpublic void testUpdateUser(){testSaveGroup();Session session = sessionFactory.getCurrentSession();session.beginTransaction();User g = (User) session.load(User.class,1);//load 为代理// get为直接System.out.println(g.getName());session.getTransaction().commit();g.setName("UU2");Session s = sessionFactory.getCurrentSession();s.beginTransaction();s.update(g);s.getTransaction().commit();System.out.println(g.getName());}*//*@Testpublic void testGetGroup(){testSaveGroup();Session session = sessionFactory.getCurrentSession();session.beginTransaction();Group g = (Group) session.get(Group.class,1);session.getTransaction().commit();for(User uu: g.getUsers()){System.out.println(uu.getName());}}*//*@Testpublic void testGetUser(){Session session = sessionFactory.getCurrentSession();session.beginTransaction();User user1 = (User) session.get(User.class,1);session.getTransaction().commit();}*//*@Testpublic void testSaveUser(){User u = new User();u.setName("u1");Group g = new Group();g.setName("g1");u.setGroup(g);Session session = sessionFactory.getCurrentSession();session.beginTransaction();//session.save(g);// 在@ManyToOne()里设‘cascade={CascadeType.ALL}’.可级联操作session.save(u);session.getTransaction().commit();}*/@Testpublic void testSaveGroup(){Group g = new Group();g.setName("g2");User u1 = new User();u1.setName("u1");u1.setGroup(g);User u2 = new User();u2.setName("u2");u2.setGroup(g);g.getUsers().add(u1);g.getUsers().add(u2);Session session = sessionFactory.getCurrentSession();session.beginTransaction();//session.save(u);// 在@ManyToOne()里设‘cascade={CascadeType.ALL}’.可级联操作session.save(g);session.getTransaction().commit();}/*@Testpublic void print(){new SchemaExport(new AnnotationConfiguration().configure()).create(false,true);}*/@AfterClasspublic static void afterClass(){sessionFactory.close();}}


 

 


 

 

原创粉丝点击