I've got a situation where I'm trying to create a table called 'user' in Postgres, which throws an error due to Hibernate not putting table names in quotes:
| Error 2012-02-27 23:06:58,782 [Thread-10] ERROR hbm2ddl.SchemaExport - Unsuccessful: create table user (id int8 not null, version int8 not null, account_expired bool not null, account_locked bool not null, email_address varchar(255) not null, enabled bool not null, first_name varchar(255) not null, last_name varchar(255) not null, mobile_number varchar(255) not null, "password" varchar(255) not null, password_expired bool not null, username varchar(255) not null unique, primary key (id))
This is despite specifying that it should use the PostgreSQLDialect in DataSource.groovy:
dialect = org.hibernate.dialect.PostgreSQLDialect
How can I configure Hibernate to put quotes around table names when dealing with Postgres?
You can quote the table name in the mapping
block with backticks. Hibernate will convert those to whatever the quoting approach is for the database based on the Dialect:
static mapping = {
table "`user`"
}
You can also just rename the table to something else that doesn't require quoting/escaping, e.g.
static mapping = {
table "users"
}
This answer might help you: https://stackoverflow.com/a/3611916/947357 It shows how to quote table names in Hibernate and in JPA.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With