hibernate继承映射:一个类继承一张表

创建时数据库运行显示正常,但是在调用子类的时候发现不能使用父类方法。请问问题在哪里呢?错误代码如下:ERRORBasicPropertyAccessor:167-Ille... 创建时数据库运行显示正常,但是在调用子类的时候发现不能使用父类方法。
请问问题在哪里呢?
错误代码如下:
ERROR BasicPropertyAccessor:167 - IllegalArgumentException in class: com.catloveless.hibernate.Animal, getter method of property: id..........
就是说找不到父类的setid方法吧?
映射文件如下:
hibernate-mapping package="com.catloveless.hibernate">
<class name="Animal" table="t_animal">
<id name="id">
<generator class="native"/>
</id>
<discriminator column="type" type="string"></discriminator>
<property name="name"/>
<property name="sex"/>

<subclass name="Pig" discriminator-value="P">
<property name="weight"/>
</subclass>

<subclass name="Bird" discriminator-value="B">
<property name="Height"/>
</subclass>
</class>
</hibernate-mapping>
这个我觉得问题不大,因为毕竟创建的时候成功了呀。
但是为什么子类没有继承到父类呢?
我并没有用到getHibernateTemplate().find(String hql, Object value)这条语句。您说的难道是在hibernate的jar里面的吗?请告诉我具体位置好吗?
展开
 我来答
贯真
2008-10-16 · TA获得超过2698个赞
知道大有可为答主
回答量:1022
采纳率:0%
帮助的人:1073万
展开全部
ERROR BasicPropertyAccessor:167 - IllegalArgumentException in class

原因:

传入参数类型与预期的类型不符

解决方法:

把方法:getHibernateTemplate().find(String hql, Object value)换成方法getHibernateTemplate().find(String hql),hql语句中的参数在外面赋值即可解决此异常,这是以前用spring得时候出的问题,你如果没找到getHibernateTemplate()那估计你没用spring.

给你一个正确得配置文件,你对比一下,看是不是什么地方有问题.
<hibernate-mapping>

<class name="com.test.Animal" table="animal">

<id name="aid" type="string" unsaved-value="null" >
<column name="aid" sql-type="char(32)" not-null="true"/>
<generator class="uuid.hex"/>
</id>

<discriminator column="atype" type="string" />

<subclass name="com.test.Dog" discriminator-value="dog">
<property name="dname">
<column name="dname" sql-type="varchar(16)" />
</property>
</subclass>

<subclass name="com.test.Cat" discriminator-value="cat">
<property name="cname">
<column name="cname" sql-type="varchar(16)"/>
</property>
</subclass>

</class>

</hibernate-mapping>
huziu235
2008-10-17
知道答主
回答量:30
采纳率:0%
帮助的人:24.9万
展开全部
看看你的pig类和bird类有没有继承animal类,没有继承的话,在sessionfactory建立的时候pig或bird是获得不了animal的id的。(相信你在子类中没设ID)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式