hibernate one2many
大家好,我跟着传智播客的视频学hibernate,在用one2many标签时遇到一点小问题,麻烦大家帮忙看一下
Employee.java
package cn.itcast;
public class Employee {
private int id;
private String name;
private Department depart;
public Department getDepart() {
return depart;
}
public void setDepart(Department depart) {
this.depart = depart;
}
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;
}
}
Department.java
package cn.itcast;
import java.util.Set;
public class Department {
private int id;
private String name;
private Set<Employee> emps;
public Set<Employee> getEmps() {
return emps;
}
public void setEmps(Set<Employee> emps) {
this.emps = emps;
}
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;
}
}
Employee.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="cn.itcast">
<class name="Employee" >
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<many-to-one name="depart" column="depart_id" not-null="true"></many-to-one>
</class>
</hibernate-mapping>
Department.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="cn.itcast">
<class name="Department" >
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<set name="emps" inverse="true">
<key column="depart_id"></key>
<one-to-many class="Employee"/>
</set>
</class>
</hibernate-mapping>
One2many.java
package cn.itcast;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class One2many {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Department depart = add();
Department depart2 = query(depart.getId());
System.out.println("size:"+depart2.getEmps());
}
static Department add(){
Session session = null;
// try{
session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
Department depart = new Department();
depart.setName("depart name:");
Employee employee1 = new Employee();
Employee employee2 = new Employee();
employee1.setName("employee1 name :");
employee1.setDepart(depart);
employee2.setName("employee22 name :");
employee2.setDepart(depart);
session.save(depart);
session.save(employee1);
session.save(employee2);
transaction.commit();
return depart;
// System.out.println("depart.getEmps().size():"+depart.getEmps().size());
// }finally{
// if(session!=null){
// session.close();
// }
// }
}
static Department query(int departId){
Session session = null;
try{
session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
Department depart = (Department)session.get(Department.class, departId);
System.out.println("id:"+depart.getId());
// System.out.println("size:"+depart.getEmps().size());
// System.out.println("size:"+depart.getEmps());
transaction.commit();
return depart;
}finally{
if(session!=null){
session.close();
}
}
}
}
为什么depart.getEmps()总是取的是空值啊??