有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我试图对几个不同的数据库使用一个Hibernate映射:H2、Oracle和MySql

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

我想冬眠,以自动摆脱保留的话

我知道我可以:

  • 使用反勾号强制逃跑(为了安全起见逃离一切)
  • 更改所有标识符,使其绝对不是任何数据库中的关键字(使其难看)
  • 将模式绑定到一组特定的数据库,避开关键字的并集(如果我在混合中添加新数据库,则会中断)

有更优雅的解决方案吗


共 (1) 个答案

  1. # 1 楼答案

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

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

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

    另见