I’m using hibernate tools to automatically create a class that represents a table in an Oracle database, the table has a large number of columns (60 or more) I’ve mapped what I think the hibernate type should be, I’ve obviously mapped something wrong as I get the following when trying to query the table
Caused by: java.sql.SQLException: Fail to convert to internal
representation at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at
oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:238)
at
oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:557)
at
oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1574)
at
org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$2.doExtract(BigIntTypeDescriptor.java:61)
at
org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at
org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:254)
at
org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:250)
at
org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:230)
at
org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:331)
at
org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283)
at 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.loader.Loader.getRowFromResultSet(Loader.java:611) at
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 more
Obviously with there being over 60 columns it’s not easy to track down which column(s) I’ve mapped incorrectly, so I’m looking for a bit of advice of what type to map to. At the moment I’ve made the following assumptions
NUMBER(Max length of 12 min length of 2) -> long
VARCHAR2(Max length of 1000 min length of 1) -> string
DATE -> timestamp
Edit: To clarify the above I have number columns ranging in size from NUMBER(2) – NUMBER(12). And VARCHAR2 columns ranging from VARCHAR2(1) – VARCHAR2(1000)
Ok sorted it wasn’t mapping the types that was the problem I was mapping a column to a long when it should have been a string.