25

我正在尝试为几个不同的数据库使用一个 Hibernate 映射:H2、Oracle、MySql。

每个数据库都有不同的保留字列表。

我希望 Hibernate 自动转义保留字。

我知道我可以:

  • 使用反引号强制转义(为了安全而转义所有内容)
  • 更改所有标识符,因此它们肯定不是任何数据库中的关键字(使它们难看)
  • 将模式绑定到一组特定的数据库,转义关键字的联合(如果我将新数据库添加到组合中,将会中断)

有没有更优雅的解决方案?

4

1 回答 1

33

AFAIK,Hibernate 不维护保留关键字列表(每个数据库),所以我认为您应该查看数据库标识符转义。

如果您使用的是 Hibernate 3.5+,请尝试hibernate.globally_quoted_identifiers=true引用所有数据库标识符(这是他们为 JPA 2.0 添加的内容,如果您使用的是 JPA,请参阅规范的2.13 数据库对象命名部分,了解 JPA 的激活方式)。

在 3.5 版本之前,Hibernate 不提供任何用于全局转义的配置选项。实施自定义NamingStrategy以透明地转义所有内容将是推荐的方法。

也可以看看

于 2010-07-30T02:08:12.247 回答