[
http://opensource.atlassian.com/projects/hibernate/browse/HBX-1000?page=c...
]
Moritz Winter commented on HBX-1000:
------------------------------------
Found a solution that works for us to reverse engineer PostgreSQL databases with upper-
and mixed case column- and tablenames.
All I had to do was to implement my own MetaDataDialect:
{noformat:title=PostgreSQLMetaDialect.java|overflow-x:auto}
package com.example;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect;
import org.hibernate.cfg.reveng.dialect.MetaDataDialect;
/**
* A implementation of the {@link MetaDataDialect} for the PostgreSQL Database.
* This is basically a wrapper around {@link JDBCMetaDataDialect} to provide case
sensitive
* access to postgresql databases.
*
* @see <a
href="http://opensource.atlassian.com/projects/hibernate/browse/HBX-...
*/
public class PostgreSQLMetaDialect extends JDBCMetaDataDialect {
private static final Log log = LogFactory.getLog(PostgreSQLMetaDialect.class);
/*
* (non-Javadoc)
* @see
org.hibernate.cfg.reveng.dialect.AbstractMetaDataDialect#needQuote(java.lang.String)
*/
public boolean needQuote(String name) {
log.debug("needQuote(" + name +")");
if(null != name && 0 != name.compareTo(name.toUpperCase())) {
return true;
} else {
return super.needQuote(name);
}
}
}
{noformat}
And configure Hibernate to use the MetaDialect:
{noformat:title=hibernate.cfg.xml}
hibernatetool.metadatadialect=com.example.PostgreSQLMetaDialect
{noformat}
*Notes*:
* If youre using JBoss Seam Tools you can add the {{hibernatetool.metadatadialect}} to the
file {{hibernate-console.properties}} which is generated with each new seam project.
* Don't forget to include the {{com.example.PostgreSQLMetaDialect}} in your Java Build
Path (Properties->Java Build Path).
Problem with PostgreSQL using uppercase letters in tables
---------------------------------------------------------
Key: HBX-1000
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HBX-1000
Project: Hibernate Tools
Issue Type: Bug
Components: reverse-engineer
Affects Versions: 3.2.beta11
Environment: Hibernate 3.2.5.ga, Hibernate Tools 3.2.0 beta9a, PostgreSql 8.2,
postgresql-8.2-506.jdbc3.jar, Eclipse 3.3.0, all running on Windows XP at the moment
(including PostgreSql)
Reporter: Ruediger Engelberger
I have problems using Hibernate tools when using upper case letters in a PostgreSQL
database.
I can configure Hibernate Tools for my local PostgreSql installation without any
problems. I can access the table structure in the view Hibernate Configurations and do
reverse engineering by creating XML mappings and beans. No problem.
But when I'm using upper case characters in table names Hibernate Tools can't
access the table structures any more. Hibernate Configuration shows the tables, but when I
want to see the columns, it doesn't show anything. Reverse engineering also
doesn't work any more.
So, the following works:
TABLE cms_clusterMessage
pk_clustermessageid
fk_clusternodeid
messagetype
messagedetail
The following doesn't work:
TABLE cms_clusterMessage
PK_ClusterMessageId
FK_ClusterNodeId
MessageType
MessageDetail
I tried to use different JDBC drivers because I thought it could be a bug of the driver.
But it wasn't.
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira