大家好,我跟着传智播客的视频学hibernate,在用one2many标签时遇到一点小问题,麻烦大家帮忙看一下
Employee.javapackage 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.javapackage 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.javapackage 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()总是取的是空值啊??
Employee.javapackage 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.javapackage 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.javapackage 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()总是取的是空值啊??
解决方案 »
- 关于final类及static方法的调用
- 在 html中形成一个excel 文档 而且可以打印的 还是正反面 都要打印 怎样写啊!大虾 ...
- 高手求解:jQuery的Ajax方法getJSON中不能访问js中的变量!
- 我用java连接数据库oracle 报错 得到这个提示 这个是什么错啊
- 这两个代码效果一样吗?
- glassfish解压内存溢出问题
- jsp邮件发送问题?怎么把html页面发送到邮箱,谢谢!!!在线等
- 关于struts中FormFile的中文名乱码问题,急!
- 急!请教,怎么样才能在同一个页里加两个JS的弹出广告且都能弹出来!
- What do you like most about software development?
- lucene 数据库索引存放位置问题
- 一段ResultSet代码,直接在数据库中能查出11个记录,但rs.next只能取到1个。很奇怪!
employee1.setDepart(depart);
employee2.setName("employee22 name :");
employee2.setDepart(depart);你只设定了employee对于Depart的关系
没有设定Depart和employee的关系应该创建一个employee集合,然后setEmps(Set <Employee> emps)建议关系在实体类中定义好了,在方法中定义太乱