这个问题困扰我2天了,我都搞不懂...请各位高手帮帮忙...感谢死你!
数据库:
project表:
project_id bigint 主键
project_name
project_descemployee表:
employee_id bigint 主键
employee_name
employee_descr_emp_proj表:
r_emp_id 主键 对应employee表主键
r_proj_id 主键 对应project表主键
Project.hbm.xml:<hibernate-mapping>
    <class name="test.Project" table="project" schema="dbo" catalog="test">
        <id name="projectId" type="java.lang.Long">
            <column name="project_id" />
            <generator class="native" />
        </id>
        <property name="projectName" type="java.lang.String">
            <column name="project_name" length="50" not-null="true" />
        </property>
        <property name="projectDesc" type="java.lang.String">
            <column name="project_desc" length="50" not-null="true" />
        </property>
        <set name="REmpProjs" table="r_emp_proj" inverse="false" cascade="all">
            <key>
                <column name="r_proj_id"/>
            </key>
            <many-to-many class="test.Employee" column="r_emp_id" />
        </set>
    </class>
</hibernate-mapping>
Employee.hbm.xml:
<hibernate-mapping>
    <class name="test.Employee" table="employee" schema="dbo" catalog="test">
        <id name="employeeId" type="java.lang.Long">
            <column name="employee_id" />
            <generator class="native" />
        </id>
        <property name="employeeName" type="java.lang.String">
            <column name="employee_name" length="50" not-null="true" />
        </property>
        <property name="employeeDesc" type="java.lang.String">
            <column name="employee_desc" length="50" not-null="true" />
        </property>
      <set name="REmpProjs" table="r_emp_proj" inverse="true" cascade="all">
            <key>
                <column name="r_emp_id"/>
            </key>
            <many-to-many class="test.Project" column="r_proj_id" />
        </set>
    </class>
</hibernate-mapping>project.java:
package test;import java.util.HashSet;
import java.util.Set;/**
 * Project entity. @author MyEclipse Persistence Tools
 */public class Project implements java.io.Serializable { // Fields private Long projectId;
private String projectName;
private String projectDesc;
private Set REmpProjs = new HashSet(0); // Constructors /** default constructor */
public Project() {
} /** minimal constructor */
public Project(String projectName, String projectDesc) {
this.projectName = projectName;
this.projectDesc = projectDesc;
} /** full constructor */
public Project(String projectName, String projectDesc, Set REmpProjs) {
this.projectName = projectName;
this.projectDesc = projectDesc;
this.REmpProjs = REmpProjs;
} // Property accessors public Long getProjectId() {
return this.projectId;
} public void setProjectId(Long projectId) {
this.projectId = projectId;
} public String getProjectName() {
return this.projectName;
} public void setProjectName(String projectName) {
this.projectName = projectName;
} public String getProjectDesc() {
return this.projectDesc;
} public void setProjectDesc(String projectDesc) {
this.projectDesc = projectDesc;
} public Set getREmpProjs() {
return this.REmpProjs;
} public void setREmpProjs(Set REmpProjs) {
this.REmpProjs = REmpProjs;
}}employee.java:package test;import java.util.HashSet;
import java.util.Set;/**
 * Employee entity. @author MyEclipse Persistence Tools
 */public class Employee implements java.io.Serializable { // Fields private Long employeeId;
private String employeeName;
private String employeeDesc;
private Set REmpProjs = new HashSet(0); // Constructors /** default constructor */
public Employee() {
} /** minimal constructor */
public Employee(String employeeName, String employeeDesc) {
this.employeeName = employeeName;
this.employeeDesc = employeeDesc;
} /** full constructor */
public Employee(String employeeName, String employeeDesc, Set REmpProjs) {
this.employeeName = employeeName;
this.employeeDesc = employeeDesc;
this.REmpProjs = REmpProjs;
} // Property accessors public Long getEmployeeId() {
return this.employeeId;
} public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
} public String getEmployeeName() {
return this.employeeName;
} public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
} public String getEmployeeDesc() {
return this.employeeDesc;
} public void setEmployeeDesc(String employeeDesc) {
this.employeeDesc = employeeDesc;
} public Set getREmpProjs() {
return this.REmpProjs;
} public void setREmpProjs(Set REmpProjs) {
this.REmpProjs = REmpProjs;
}}测试类:
package test;import java.util.Iterator;public class ManyToOneTest {
public static class lll extends BaseHibernateDAO {
public void testManyToOne() {
Project project = (Project) super.get(Project.class, 1);
Iterator it = project.getREmpProjs().iterator();
System.out.println("项目:" + project.getProjectName() + "\n成员:");
while (it.hasNext()) {
Employee emp = (Employee) it.next();
System.out.print(emp.getEmployeeName());
} } public static void main(String[] args) {
new lll().testManyToOne();
}
}
}错误提示:log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.Long, got class java.lang.Integer
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
at test.BaseHibernateDAO.get(BaseHibernateDAO.java:16)
at test.ManyToOneTest$lll.testManyToOne(ManyToOneTest.java:60)
at test.ManyToOneTest$lll.main(ManyToOneTest.java:71)
Exception in thread "main" java.lang.NullPointerException
at test.ManyToOneTest$lll.testManyToOne(ManyToOneTest.java:61)
at test.ManyToOneTest$lll.main(ManyToOneTest.java:71)