将Oracle类型映射到Hibernate类型

时间:2011-12-16 09:44:05

标签: oracle hibernate oracle10g

我正在使用hibernate工具自动创建一个表示Oracle数据库中的表的类,该表有大量列(60或更多)我已经映射了我认为hibernate类型应该是什么,我当我在尝试查询表时得到以下内容时,显然已经错误地映射了错误

  

引起:java.sql.SQLException:无法转换为内部   代表在   oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)     在   oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)     在   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)     在   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)     在org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)     在org.hibernate.loader.Loader.getRow(Loader.java:1355)at   org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)at at   org.hibernate.loader.Loader.doQuery(Loader.java:829)at   org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)     在org.hibernate.loader.Loader.doList(Loader.java:2542)... 9更多

显然,由于有超过60列,所以不容易找到我错误映射的列,所以我正在寻找一些关于要映射到哪种类型的建议。目前我做了以下假设

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)

1 个答案:

答案 0 :(得分:0)

好的排序它没有映射那个问题的类型我将一个列映射到long应该是一个字符串。