Hibernate常见异常-无法转换为内部表示

来源:互联网 发布:java utf8 转 gbk 编辑:程序博客网 时间:2024/04/29 17:27
 

Hibernate常见异常-无法转换为内部表示
java.sql.SQLException: 无法转换为内部表示
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)

    at oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:239)

    at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:514)

    at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1617)

    at org.hibernate.type.LongType.get(LongType.java:28)

    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)

    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)

    at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)

    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2096)

    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1380)

    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)

    at org.hibernate.loader.Loader.getRow(Loader.java:1206)

    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)

    at org.hibernate.loader.Loader.doQuery(Loader.java:701)

    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)

    at org.hibernate.loader.Loader.doList(Loader.java:2220)

    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)

    at org.hibernate.loader.Loader.list(Loader.java:2099)

    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)

    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)

    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)

    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)

    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)

 

从异常中我们明确的能看到 org.hibernate.type.LongType.get(LongType.java:28),这个表明了是LongType的异常。此时我们锁定的目标就是实体类的Long类型。

1. 检查实体类的Long类型参数与数据库中对应的字段是否匹配

2. 如果检查O-R对应的字段类型没问题,则考虑DB中数据是否有问题,Hibernate中,String类型的数据可以插入到Long类型中,可是在查询时候将无法转型(详细请了解Oracle的Long类型数据)


参考:http://www.blogjava.net/jzone/articles/322407.html
http://howieshen.blogbus.com/logs/59823642.html