首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Hibernate 双向一对多的关联有关问题,

2012-09-06 
Hibernate 双向一对多的关联问题,在线等啊我现在有两张表,一个employee,一张evaluate,其中employee的emp_i

Hibernate 双向一对多的关联问题,在线等啊
我现在有两张表,一个employee,一张evaluate,其中employee的emp_id是evaluate的外键,代码及配置文件如下:employee.java


package com.yinhai.giuzhou.employee.demo;

import com.yinhai.giuzhou.evaluate.demo.Evaluate;

public class Employee {
private int emp_id;
private String emp_name;
private String emp_sex;
private String emp_birth;
private String emp_job;
private String emp_office_tel;
private String emp_note;
private String emp_pic;
private int emp_login;
private String emp_pwd;
private String login_name;
private Evaluate evaluate;


public void setEvaluate(Evaluate evaluate) {
this.evaluate = evaluate;
}

public Evaluate getEvaluate() {
return evaluate;
}

public int getEmp_id() {
return emp_id;
}

public void setEmp_id(int empId) {
emp_id = empId;
}

public String getEmp_name() {
return emp_name;
}

public void setEmp_name(String empName) {
emp_name = empName;
}

public String getEmp_sex() {
return emp_sex;
}

public void setEmp_sex(String empSex) {
emp_sex = empSex;
}

public String getEmp_birth() {
return emp_birth;
}

public void setEmp_birth(String empBirth) {
emp_birth = empBirth;
}

public String getEmp_job() {
return emp_job;
}

public void setEmp_job(String empJob) {
emp_job = empJob;
}

public String getEmp_office_tel() {
return emp_office_tel;
}

public void setEmp_office_tel(String empOfficeTel) {
emp_office_tel = empOfficeTel;
}

public String getEmp_note() {
return emp_note;
}

public void setEmp_note(String empNote) {
emp_note = empNote;
}

public String getEmp_pic() {
return emp_pic;
}

public void setEmp_pic(String empPic) {
emp_pic = empPic;
}

public int getEmp_login() {
return emp_login;
}

public void setEmp_login(int empLogin) {
emp_login = empLogin;
}

public String getEmp_pwd() {
return emp_pwd;
}

public void setEmp_pwd(String empPwd) {
emp_pwd = empPwd;
}

public String getLogin_name() {
return login_name;
}

public void setLogin_name(String loginName) {
login_name = loginName;
}


}

evaluate.java:

package com.yinhai.giuzhou.evaluate.demo;

import java.util.Date;

import com.yinhai.giuzhou.employee.demo.Employee;

public class Evaluate {

private int evaluate_id;
private Date evaluate_time;
private String evaluate_result;
private Employee employee;


public Employee getEmployee() {
return employee;
}

public void setEmployee(Employee employee) {
this.employee = employee;
}

public int getEvaluate_id() {
return evaluate_id;
}

public void setEvaluate_id(int evaluateId) {
evaluate_id = evaluateId;
}

public Date getEvaluate_time() {
return evaluate_time;
}

public void setEvaluate_time(Date evaluateTime) {
evaluate_time = evaluateTime;
}

public String getEvaluate_result() {
return evaluate_result;
}

public void setEvaluate_result(String evaluateResult) {
evaluate_result = evaluateResult;
}

}


Employee.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping>
<class name="com.yinhai.giuzhou.employee.demo.Employee" table="employee" schema="dbo" catalog="gzzw">
  <!-- 复合主键配置 其中两个key-property,分别对应两个主键-->
  <id name="emp_id" type="java.lang.Integer" >
  <column name="emp_id" />
  <generator class="identity" />
  </id>
   
  <set name="evaluate" inverse="true" table="evaluate"
  lazy="false">
  <key>
  <column name="emp_id"></column>
  </key>
  <one-to-many class="com.yinhai.giuzhou.evaluate.demo.Evaluate"/>
  </set>
   
  <property name="emp_name" type="string" column="emp_name"></property>
  <property name="emp_sex" type="string" column="emp_sex"></property>
  <property name="emp_birth" type="string" column="emp_birth"></property>
  <property name="emp_job" type="string" column="emp_job"></property>
  <property name="emp_office_tel" type="string" column="emp_office_tel"></property>
  <property name="emp_note" type="string" column="emp_note"></property>
  <property name="emp_pic" type="string" column="emp_pic"></property>
  <property name="emp_login" type="java.lang.Integer" column="emp_login"></property>
  <property name="emp_pwd" type="string" column="emp_pwd"></property>
  <property name="login_name" type="string" column="login_name"></property>
 
  </class>
</hibernate-mapping>


Evaluate.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.yinhai.giuzhou.evaluate.demo.Evaluate" catalog="gzzw" schema="dbo" table="evaluate">
<id name="evaluate_id" column="evaluate_id" type="java.lang.Integer">
<generator class="identity"></generator>
</id>

<many-to-one name="employee" class="com.yinhai.giuzhou.employee.demo.Employee"
outer-join="auto" cascade="none" access="property" not-null="true">
<column name="emp_id"></column>
</many-to-one>

<property name="evaluate_time" type="java.util.Date" column="evaluate_time"></property>
<property name="evaluate_result" type="string" column="evaluate_result"></property>

</class>
</hibernate-mapping>

报错如下:IllegalArgumentException occurred while calling setter of com.yinhai.giuzhou.employee.demo.Employee.evaluate 请教大虾啊

[解决办法]
把Employee中的evaluate变量改为Set<Evaluate>类型,不是一对多吗!!!!
------解决方案--------------------


private Evaluate evaluate
一对多怎么能这样写呢!!
应该设置一个Set。
private Set<Evaluate> = new HashSet<Evaluate>();
getter/setter
这样才能将一对多的关系映射。

[解决办法]
private Evaluate evaluate;
一对多应该是这样private Set<Evaluate> evaluate;

热点排行
Bad Request.