问题描述
我有一种情况,我正在试图在Postgres中创建一个名为'user'的表格,由于Hibernate没有将表格名称放在引号中引发错误:
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))
尽管指定它应该在DataSource.groovy中使用PostgreSQLDialect:
This is despite specifying that it should use the PostgreSQLDialect in DataSource.groovy:
dialect = org.hibernate.dialect.PostgreSQLDialect
如何配置Hibernate在处理Postgres时将表名引起来?
How can I configure Hibernate to put quotes around table names when dealing with Postgres?
推荐答案
您可以使用反引号在映射
块中引用表名。 Hibernate会将这些转换为基于方言的数据库的引用方式:
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"
}
这篇关于如何配置Hibernate将表名引起来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!