我正在使用Spring JPA 2.0.9与Hibernate 5.3.5以及此方言,通过使用来自此分发的官方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,使其自动用双引号包裹所有列名称?
spring.jpa.properties.hibernate.globally_quoted_identifiers
。对于Spring Boot来说,这个属性是spring.jpa.properties.hibernate.globally_quoted_identifiers
。 - Nikita Bosik