一个Organization类
package com.oa.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_organization")
public class Organization {
private int id;
private String name;
private String sn;
private String description;
private Organization parent;
private Set<Organization> children = new HashSet<Organization>();
@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;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@ManyToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name = "parentid")
public Organization getParent() {
return parent;
}
public void setParent(Organization parent) {
this.parent = parent;
}
@OneToMany(cascade={CascadeType.REFRESH,CascadeType.REMOVE},mappedBy="parent")
public Set<Organization> getChildren() {
return children;
}
public void setChildren(Set<Organization> children) {
this.children = children;
}
}
我的测试是
@Test
public void testSave() {
Session session;
try {
session = sessionFactory.openSession();
session.beginTransaction();
Set<Organization> set = new HashSet<Organization>();
Organization org2 = new Organization();
org2.setName("org2");
set.add(org2);
Organization org3 = new Organization();
org3.setName("org3");
set.add(org3);
Organization org4 = new Organization();
org4.setName("org4");
set.add(org4);
Organization org1 = new Organization();
org1.setName("org1");
org1.setChildren(set);
System.out.println(set.size());
session.save(org1);
session.save(org2);
session.save(org3);
session.save(org4);
session.getTransaction().commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
我说明一下,我的Organization里有一个parent 还有一个children ,测试类里,我把org1是父机构,把org2,org3,org4,当为子机构为什么,自关联里,那个parentid总是为空