Hibernate的关联继承(一个令人崩溃的bug)

     跟着李刚的《轻量级Java EE企业应用实战》的第10章做一个小例子,按照步骤下来老是出一个问题,错误提示如下:

2010-12-2 8:12:33 org.hibernate.property.BasicPropertyAccessor$BasicGetter get
严重: IllegalArgumentException in class: model.Employee, getter method of property: id

看内容错误应该是:传入了错误的参数类型,可是把各种配置文件检查了一遍,到底没有发现错误。最后决定从PO开始检查,到了Manager.java时突然发现,忘记了让它继承Employee类,原来错误在这里,真是崩溃啊,浪费我1天半的时间。呜呼!

 

 

对应的映射文件Employee.hbm.xml:

?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping
 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Hibernate映射文件的根元素 -->
<hibernate-mapping package="model">
 <class name="Employee" table="emp_table">
  <!-- 映射标识属性 -->
  <id name="id" type="integer" column="emp_id">
   <!-- 指定使用identity主键生成策略 -->
   <generator class="identity"/>
  </id>
  <!-- 映射普通属性 -->
  <property name="name" column="emp_name" type="string"
   not-null="true" length="50" unique="true"/>
  <property name="pass" column="emp_pass" type="string"
   not-null="true" length="50"/>
  <property name="salary" column="emp_salary" type="double"
   not-null="true" />
  <!-- 映射和Manager的关联关系 -->
  <many-to-one name="manager" column="mgr_id"
   class="Manager" lazy="false"/>
  <!-- 映射和Attend之间的关联关系 -->
  <set name="attends" inverse="true">
   <key column="emp_id" />
   <one-to-many class="Attend"/>
  </set>
  <!-- 映射和Payment之间的关联关系 -->
  <set name="payments" inverse="true">
   <key column="emp_id" />
   <one-to-many class="Payment"/>
  </set>
  <!-- 映射Employee的子类Manager -->
  <joined-subclass name="Manager" table="mgr_table">
   <key column="mgr_id"/>
   <!-- 映射Manager的普通属性 -->
   <property name="dept" column="dept_name"
    type="string" not-null="true" length="50"/>
   <!-- 映射和Employee之间的关联关系 -->
   <set name="employees" inverse="true">
    <key column="mgr_id" />
    <one-to-many class="Employee"/>
   </set>
   <!-- 映射和CheckBack之间的关联关系 -->
   <set name="checks" inverse="true">
    <key column="mgr_id" />
    <one-to-many class="CheckBack"/>
   </set>
  </joined-subclass>

 </class>
</hibernate-mapping>

你可能感兴趣的:(Hibernate,manager,String,table,Class,payment)