hibernate one2many

dxx276786560888321 2009-08-05 03:27:22
大家好,我跟着传智播客的视频学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()总是取的是空值啊??


...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pisces0302 2009-08-07
  • 打赏
  • 举报
回复
depart.getEmps()总是取的是 空 值

你没有SetEmps(),当然是空的

employee1.setName("employee1 name :");
employee1.setDepart(depart);
employee2.setName("employee22 name :");
employee2.setDepart(depart);

你只设定了employee对于Depart的关系
没有设定Depart和employee的关系

应该创建一个employee集合,然后setEmps(Set <Employee> emps)

建议关系在实体类中定义好了,在方法中定义太乱
dxx276786560888321 2009-08-05
  • 打赏
  • 举报
回复
大家快来帮我看一下啊

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧