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
@GeneratedValue
public 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
@Test
public 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());
}
}