Hibernate 5.0.12使用Mysql 5.7进行错误的列定义转义

时间:2017-06-05 07:33:41

标签: mysql spring hibernate jpa

我正在使用Hibernate + Spring JPA和Mysql 5.7作为DBMS。我想使用一些保留的关键字作为列名,为此我得到了支持:

spring.jpa.properties.hibernate.globally_quoted_identifiers =真

某些列具有自定义定义,如:

@CreatedDate
    @Column(updatable = false, columnDefinition = "DATETIME(6)")
    private LocalDateTime createdDate;

不幸的是,Hibernate将其翻译为:

`created_date` `DATETIME(6)`

而不是

`created_date` DATETIME(6)

我在Hibernate JIRA (JIRA)上打开了一个问题;我想知道是否有同时使用的解决方法。

3 个答案:

答案 0 :(得分:3)

感谢Hibernate人员找到了正确的解决方案:

为了避免引用列定义,有一个特定的设置:

spring.jpa.properties.hibernate.globally_quoted_identifiers_skip_column_definitions=true

不幸的是,现在,它向后工作(see this bug):因此,如果您想跳过列定义,则必须将其设置为 false

答案 1 :(得分:0)

答案 2 :(得分:0)

我为你找到了一个解决方案,只是@Column(name = ""to"") 你想要替换什么而不是替换