Details
Details
Assignee
Unassigned
UnassignedReporter
Nobody Who Cares
Nobody Who CaresBug Testcase Reminder (view)
Bug reports should generally be accompanied by a test case!
Bug Testcase Reminder (edit)
Bug reports should generally be accompanied by a test case!
Participants
Max Rydahl Andersen
Nobody Who Cares
Community Help Wanted
Yes, please
Components
Affects versions
Priority
Created July 7, 2008 at 5:10 PM
Updated December 10, 2024 at 11:53 AM
The SQL constants used in the prepared statements use the "left join" phrase instead of the 8i equivalent syntax where the "" symbol is located appropriately based on right/left qualifier. Subsequent execution produces the following exception as expected with unrecognized syntax:
Caused by: java.sql.SQLException: ORA-00933: SQL command not properly ended
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:
643)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.jav
a:1819)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
nt.java:2015)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
edStatement.java:395)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare
dStatement.java:339)
at org.hibernate.cfg.reveng.dialect.OracleMetaDataDialect.getTableResult
Set(OracleMetaDataDialect.java:672)
at org.hibernate.cfg.reveng.dialect.OracleMetaDataDialect.getTables(Orac
leMetaDataDialect.java:221)
... 30 more
The 8i syntax should be used since it is compatible with all versions of Oracle. I realize that 8i is a decade+ old...but it is still employed in many commercial and government mission critical enterprise systems.
Overriding the class with the generic JDBCMetaDataDialect class (i.e. hibernatetool.metadatadialect property value) also produces an exception (i.e. Invalid column name) because the ResultSet inner class convertRow() method implementation uses getString"<table name>") as opposed to the more precise getString(<index>) technique.