跟着李刚的《轻量级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.java类未正确继承Employee类。修复此错误后,程序正常运行。博客详细介绍了错误现象、排查过程以及解决方案。
1万+

被折叠的 条评论
为什么被折叠?



