Hibernate常见错误

1.org.hibernate.PropertyAccessException: exception setting property value with

原因:数据库中一些数值字段没有设置为“允许null”。那么bean中就必须用对象如Integer而不能用int,因为Integer是允许null,int这种数据类型是没有null这种情况的,所以会出错;

    解决方法:把数据库中该字段改为not null,xml也要加上not-null="true";

2.no session or session was closed

出错环境:该异常通常是出现在用Load获取信息后,在读取里面数据的时候报的错;

原因:由于Load的时候默认是不去搜索库的,等到你要使用里面的数据时,才去搜索数据库,但这时session已经被你关了;

    解决方法:详见《hibernate中lazy的设置》;

3.no session or session was closed

出错环境:该异常通常是出现在调用bean中级联数据时报的错;

BUG原因:由于你搜索主表中数据的时候,Hibernate默认并不去搜索其级联数据(lazy=true时),等你要使用级联数据的时候才去搜索数据库,但这时session已经被你关了;

    解决方法:详见《hibernate中lazy的设置》;

4.org.hibernate.exception.GenericJDBCException: could not execute query

出错环境:使用query.setParameter设置中文值时出错,设置字母则搜索正常;

BUG原因:由于数据库的驱动包不对;

    解决方法:拷贝你连接的库中的jdbc驱动包;

5.org.hibernate.hql.ast.QuerySyntaxException: unexpected token: null

出错环境:使用session.createQuery(hql)的时候出错;

BUG原因:由于我的HQL不完整,没有加?号[fromTestwhereusernamelike?];

    解决方法:把HQL补充完整即可;

6.org.hibernate.exception.GenericJDBCException: Cannot open connection

出错环境:使用session.save()等等这类对库进行操作的语句时出错;

BUG原因:Hibernate获取不到数据库连接;

    解决方法:查看数据库连接的信息是否正确;

7.org.hibernate.MappingException: Could not read mappings from resource

出错环境:HibernateSessionFactory.rebuildSessionFactory的时候出错

BUG原因:有很多种情况,这边列出我遇到过的

1.hibernate.cfg.xml中配置的XML文件的路径不正确;

2.同一XML在hibernate.cfg.xml写了两次;

解决方法:根据不同情况的解决方法

1.把错误的XML路径修改过来即可;

        2.把重复的XML文件删除掉即可;

8.Hibernate中many-to-one报错ORA-00918: column ambiguously defined

出错环境:当使用setMaxResults和setFirstResult之后再执行查询操作时报错;

BUG原因:查看Hibernate执行的HQL会发现里面有搜索出同名字的字段,故而出错;

解决方法:XML中property和many-to-one出现相同的字段,去掉property中该关联字段即可;

相关推荐