2011-12-16 180 views
1

我使用hibernate工具自动创建表示Oracle数据库中的表的类,表中有大量列(60或更多)我已映射了我认为的休眠类型应该是,我明明映射一些错误,因为我在尝试查询表将Oracle类型映射到Hibernate类型

通过时引起以下内容:值java.sql.SQLException:无法转换到内部 表示在 oracle.jdbc .driver.DatabaseError.throwSqlException(DatabaseError.java:111) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145) a吨 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207) 在 oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:238) 在 oracle.jdbc.driver.OracleResultSetImpl.getLong( OracleResultSetImpl.java:557) 在 oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1574) 在 org.hibernate.type.descriptor.sql.BigIntTypeDescriptor $ 2.doExtract(BigIntTypeDescriptor.java:61) 在 org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType。的java:254) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:250) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:230) 在 org.hibernate.type .AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:331) 在 org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283) 在org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527) at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455) at org.hibernate.loader.Loader.getRow(Loader.java:1355)at org.hibernate.loa org.hibernate.loader.loader.doQuery(Loader.java:829)at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) at org.hibernate.loader.Loader.doList(Loader.java:2542)...... 9点多

有有是超过60列,这并不容易追查其列(S)我已经制定正确

显然,所以我正在寻找一些关于要映射到什么类型的建议。目前,我做了以下假设

NUMBER(Max length of 12 min length of 2) -> long 
VARCHAR2(Max length of 1000 min length of 1) -> string 
DATE -> timestamp 

编辑:为了澄清上述我的列数范围从NUMBER(2)大小 - NUMBER(12)。和VARCHAR2列从VARCHAR2(1) - VARCHAR2(1000)

回答

0

好吧排序它没有映射的问题是我把一个列映射到一个长的时候,它应该是一个字符串的问题。