刚学hibernate,测试时遇到下面这个问题想问一下大家(在google上找过了但是解决方案试了没用,依然这样
):
org.hibernate.exception.GenericJDBCException: could not load an entity: [com.bing.hibernate.Animal#1]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
Caused by: java.sql.SQLException: Unknown type '16 in column 2 of 6 in binary-encoded result set.
这个是我做的简单测试:public void testLoad5() {
Session session = null;
try {
session = HibernateUtils.getSession();
//session.beginTransaction();

//可以正确的判断出Pig的类型,因为返回的是具体的Pig类型
//get支持多态查询
Animal animal = (Animal)session.get(Animal.class, 1); if (animal instanceof Pig) {
System.out.println(animal.getName());
}else {
System.out.println("不是猪");
}
// session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
// session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}  这个是我的映射文件*.hbm.xml
<hibernate-mapping package="com.bing.hibernate">
<class name="Animal" table="t_animal" lazy="false">
   <id name="id">
    <generator class="native"/>
   </id>
   <discriminator column="type" not-null="true"/>
   <property name="name" />
   <property name="sex" column="sex" type=""/>
   
   <subclass name="Pig" discriminator-value="P">
      <property name="weight"></property>
   </subclass>
   <subclass name="Bird" discriminator-value="B">
     <property name="height"></property>
   </subclass>
    </class>
</hibernate-mapping>初次发贴,可能还有些地方需要改正,希望大家能指出来,谢谢大家啦!!!

解决方案 »

  1.   

    应该不是这个问题,因为在这里我是通过 Animal.class 去获得它的对应的实例.谢谢
      

  2.   

    也就是 你的session.get(Animal.class, 1); 得不到 相应的实体 id为1的那个没有这条记录
    自己检查看看
      

  3.   

    是不是hibernate的延迟加载的问题 我也遇到过这样的问题,我后来就直接把延迟加载给关了,lazy=false
      

  4.   

    看错误信息,是SQL的问题。打开SQL的logging,拷贝打印出的SQL语句,看看是否能直接运行。