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里面的吗?请告诉我具体位置好吗? 展开
请问问题在哪里呢?
错误代码如下:
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里面的吗?请告诉我具体位置好吗? 展开
2个回答
展开全部
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>
原因:
传入参数类型与预期的类型不符
解决方法:
把方法: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>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询