[hibernate-issues] [Hibernate-JIRA] Updated: (HBX-1071) OracleMetaDataDialect not 8i compliant ... join keyword versus (+)
Nobody Who Cares (JIRA)
noreply at atlassian.com
Tue Jul 8 14:39:12 EDT 2008
[ http://opensource.atlassian.com/projects/hibernate/browse/HBX-1071?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nobody Who Cares updated HBX-1071:
----------------------------------
Attachment: Oracle8iMetaDataDialect.java
Attached is my attempt to override the OracleMetaDataDialect class; I 8ized the SQL constants that contain the ANSI "join" clauses. The "final" keyword should be added to the OracleMetaDataDialect because it is difficult to extend w/ all the private constants and methods...or create protected methods for SQL access invoked by the various prepared statement preparation behavior. JBoss Seam 2.0.2.SP1 "seam generate-entities" executed successfully w/ the attached class.
> OracleMetaDataDialect not 8i compliant ... join keyword versus (+)
> ------------------------------------------------------------------
>
> Key: HBX-1071
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1071
> Project: Hibernate Tools
> Issue Type: Bug
> Components: reverse-engineer
> Affects Versions: 3.2.0.GA
> Environment: Whatever 3.2.X version is packaged w/ JBoss Seam 2.0.2.SP1, Oracle 8.1.7.4.0
> Reporter: Nobody Who Cares
> Priority: Minor
> Attachments: Oracle8iMetaDataDialect.java
>
>
> 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.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list