当前位置: 首页 > 面试题库 >

如何配置Hibernate在表名周围加上引号

弘思聪
2023-03-14
问题内容

我遇到一种情况,我试图在Postgres中创建一个名为“ user”的表,由于Hibernate没有将表名放在引号中而引发了错误:

| 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,但是:

dialect = org.hibernate.dialect.PostgreSQLDialect

在处理Postgres时,如何配置Hibernate在表名周围加引号?


问题答案:

您可以在mapping带反引号的块中引用表名。Hibernate会将其转换为基于Dialect的数据库引用方法:

static mapping = {
    table "`user`"
}

您也可以将表重命名为不需要引用/转义的其他名称,例如

static mapping = {
    table "users"
}


 类似资料:
  • 问题内容: 我有以下选择查询创建: jOOQ生成以下查询: 查询应为: 后者查询在PostgreSQL中完美地工作。表别名不应用引号引起来。 这是一个错误吗? (请注意,该查询非常愚蠢。我正在使用jOOQ进行评估。) 以下“黑客”作品: 问题答案: 默认情况下,jOOQ会将所有标识符包装在引号中,以便能够正确处理区分大小写的情况。 令人困惑的部分是为什么这么做并不是为了做到而是为了做到。原因是jO

  • 问题内容: 我想在Java中打印反引号。但是如何打印呢? 预期的操作:“嗨” ..... 问题答案: 因为双引号 分隔 字符串值,所以您自然必须对它们进行转义以编写文字双引号,但是您可以这样做, 而不必 像这样转义: 此处,双引号字符()已被编码为值。我发现这种样式比“笨拙”的反斜杠方法更容易阅读。但是,这种方法只能在附加 单个 字符常量时使用,因为“字符”(当然)就是一个字符。

  • 问题内容: 在阅读了一些有关SQL问题的答案和评论,并听到我的一个朋友在一个禁止他们使用的政策的地方工作之后,我想知道在MySQL的字段名周围使用反引号是否有问题。 那是: 问题答案: 使用反引号允许您使用其他字符。在查询编写中,这不是问题,但是如果假设您可以使用反引号,那么我认为它可以让您摆脱诸如 当然哪个会生成命名错误的表。 如果您只是为了简洁起见,我认为它没有问题,那么您会注意是否按如下方式

  • 主要活动。xml 这是一张圆形的照片。xml: 我尝试了一些阴影效果的代码,但它不起作用。

  • 问题内容: 我正在使用jQuery的getJSON函数发出请求并处理JSON响应。问题是我返回的响应格式错误,无法更改。响应如下所示: 要成为有效的JSON,它应如下所示: 我想将返回的文本更改为有效的JSON对象。我已经使用JavaScript replace函数将单引号转换为双引号,将转义的单引号转换为单引号,但是现在我仍然想方设法找出在键值周围添加引号的最佳方法。 例如,我将如何更改为?是否

  • https://docs . JBoss . org/hibernate/ORM/5.2/javadocs/org/hibernate/interceptor . html说onPrepareStatement(字符串sql)不推荐使用。如果希望检查和修改SQL语句,请提供StatementInspector。 但是我不清楚如何在hibernate中在应用程序级别配置StatementInspec