1

我们遇到了以下情况。

请注意,我知道保留字不应该用于表名,但无论如何我还是出于好奇而问这个问题。

我们正在使用 Spring + Hibernate 来管理我们的数据库。我正在向名为Group的数据库中添加一个新模型。所以,我将我的模型定义为:

@Entity
@Table(name = "group")
public class Group {
    ...
}

现在,问题是,在重新创建表时,生成的 SQL 如下所示:

create table group (...)

不幸的是,这在 MySQL 中是不允许的,因为group它是一个保留字。正确的 SQL 应该是:

create table `group`(...)

我有什么办法可以做到这一点吗?

4

2 回答 2

2

您可以通过执行以下操作强制 Hibernate 转义标识符:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-quotedidentifiers

基本上可以自己引用,然后Hibernate会根据方言使用合适的引用技巧

于 2010-12-09T10:59:58.267 回答
0

您可以尝试实现自己的 org.hibernate.cfg.NamingStrategy,它将反引号添加到所有表中。-- 但我确信这滥用了 NamingStrategy 类。

于 2010-12-09T11:05:20.523 回答