[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