Hibernate表和列的自动保留字转义

我正在尝试对多个不同的数据库使用一种Hibernate映射:H2,Oracle,MySql。

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

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

我知道我可以:

  • 使用反引号强制转义(为了安全起见,请逃避一切)
  • 更改所有标识符,使它们在任何数据库中都肯定不是关键字(使它们难看)
  • 将模式绑定到一组特定的数据库,转义关键字的并集(如果将新数据库添加到组合中,则会中断)

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

回答:

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

如果您使用的是Hibernate

3.5+,请尝试hibernate.globally_quoted_identifiers=true引用所有数据库标识符(这是为JPA 2.0添加的

,请参阅规范的 的 ,以了解使用JPA激活该功能的JPA方法)。

在3.5版之前,Hibernate不提供任何用于全局转义的配置选项。建议采用实现自定义NamingStrategy以透明地转义所有内容的方法。

也可以看看

  • 数据库独立的列/表名称是否转义?
  • HHH-2578-重新设计SessionFactory建筑物 -我的理解是,解决此问题将使自动转义关键字(通过方言)成为可能。

以上是 Hibernate表和列的自动保留字转义 的全部内容, 来源链接: utcz.com/qa/412850.html

回到顶部