048:hibernate:关联关系的CRUD_cascade_fetch_2

来源:互联网 发布:mac电脑中病毒 编辑:程序博客网 时间:2024/06/14 09:04

crud 如果存储group的情况。

crud 如果从里面拿出来的时候。

 

cascude管crud,主要是增删改查

fetch管load,get主要是读

在group中加标签fetch=FetchType.EAGER

 

 

package com.bjsxt.hibernate;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.JoinColumn;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>();@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;}@OneToMany(mappedBy="group",cascade={CascadeType.ALL},fetch=FetchType.EAGER)public Set<User> getUsers() {return users;}public void setUsers(Set<User> users) {this.users = users;}}


对于执行testGetUser(),   先执行testSaveGroup()

当执行完testSaveGroup()后,在group表里面有id为1,在user表里面为Id为1和2

@Testpublic void testGetUser() {testSaveGroup();Session s = sessionFactory.getCurrentSession();s.beginTransaction();User u = (User)s.get(User.class, 1);s.getTransaction().commit();System.out.println(u.getGroup().getName());}


 

@Test public void testGetGroup() {    testSaveGroup();    Session s = sessionFactory.getCurrentSession();  s.beginTransaction();  Group g = (Group)s.get(Group.class, 1);  s.getTransaction().commit();  for(User u : g.getUsers()) {   System.out.println(u.getName());  } }


 

0 0
原创粉丝点击