我正在将Spring JPA 2.0.9与Hibernate 5.3.5结合使用,并且该方言使用从此发行版中获取的官方JDBC驱动程序通过JDBC访问FileMaker(v16)数据库。
事实是,最终的SQL最终将带有以相应表名作为前缀的列名,例如:
select
marketingc0_.a__IDPK_MarketingCategory as a__IDPK_1_0_0_, marketingc0_.Active as Active2_0_0_
from MarketingCategories as marketingc0_
where marketingc0_.a__IDPK_MarketingCategory=1
哪个FileMaker不会抱怨语法错误:
[08007] [27034] [FileMaker] [FileMaker JDBC] FQL0001 /(1:153):查询的语法中有错误。
但是,如果列名用双引号引起来,它会吞没SQL,而不会产生抱怨:
select
marketingc0_."a__IDPK_MarketingCategory" as a__IDPK_1_0_0_, marketingc0_."Active" as Active2_0_0_
from MarketingCategories as marketingc0_
where marketingc0_.a__IDPK_MarketingCategory=1
我想出的解决方案是将这些引号包括在实体注释中:
public class MarketingCategory {
@Id
@Column(name = "\"a__IDPK_MarketingCategory\"")
private Integer id;
@Column(name = "\"a_ID_User\"")
private Integer userId;
@Column(name = "\"Active\"")
private Boolean active;
...
}
看起来不太好
是否可以配置Hibernate,使其自动将所有列名都用双引号引起来?
您可以在定义中设置一个名为的属性hibernate.globally_quoted_identifiers
,该属性true
将引用所有标识符。除此以外,还有一个选项不引用列,但没有选项仅引用列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句