在Hibernate中用双引号包装列名

问题描述 投票:1回答:1

我使用Spring JPA 2.0.9与Hibernate 5.3.5和this dialect通过JDBC使用从这个distribution获取的官方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不接受抱怨错误的语法:

[0834] [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以便它自动将所有列名称包装在双引号中?

java hibernate spring-data-jpa filemaker
1个回答
2
投票

您可以在定义中将名为hibernate.globally_quoted_identifiers的属性设置为true,它将引用所有标识符。除此之外还有一个选项可以不引用列,但是没有选项只引用列。

© www.soinside.com 2019 - 2024. All rights reserved.