gpt4 book ai didi

java - Postgresql 枚举在 springboot 1.5->2.0 迁移期间中断

转载 作者:行者123 更新时间:2023-11-29 12:41:01 25 4
gpt4 key购买 nike

我正在尝试 migrate a project from springboot 1.5 to 2.0 .到目前为止我所做的就是rename some crud repo methods并更新我的 gradle 构建文件。现在,在运行我的应用程序时,当它尝试保存到数据库时出现此错误:

| 2018-05-02 16:39:10.581 -DEBUG 20748 [Scheduler-1] org.hibernate.SQL              : insert into table_a (enum_column) values (?)
| 2018-05-02 16:39:10.581 -TRACE 20748 [Scheduler-1] org.hibernate.type.EnumType : Binding [OPTIONA] to parameter: [1]
| 2018-05-02 16:39:10.620 - WARN 20748 [Scheduler-1] ne.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42804
| 2018-05-02 16:39:10.634 -ERROR 20748 [Scheduler-1] ne.jdbc.spi.SqlExceptionHelper : ERROR: column "enum_column" is of type custom_enum but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 121

在我尝试迁移到较新的 springboot 版本之前,一切正常。我没有在讨论此问题的迁移指南中看到任何内容。是否有人知道对其中一个(或其他常见软件包)的更改会导致此问题?

  • spring-core-4.3.12 -> 5.0.5
  • spring-data-jpa-1.11.8 -> 2.0.6
  • spring-boot-starter-data-jpa-1.5.8 -> 2.0.1
  • flyway-core-4.2.0 -> 5.0.7
  • postgresql-42.2.2
  • hibernate 核心 5.0.12 -> 5.2.16

这里是相关枚举代码的精简版本:

在我的模型中,使用 JPA 注释

@Entity
@Table(name = "table_a")
public class CustomTable {
@Enumerated(EnumType.STRING)
@Column(name = "enum_column", nullable = false)
private CustomEnum enumField;

枚举声明

public enum CustomEnum {
OPTIONA, OPTIONB
}

Flyway 数据库迁移

CREATE TYPE custom_enum AS ENUM('OPTIONA', 'OPTIONB'); 
CREATE TABLE table_a (
id bigserial PRIMARY KEY,
enum_column custom_enum NOT NULL
);

如果您需要其他包版本号或其他代码片段,请告诉我。谢谢!

最佳答案

在进一步挖掘之后,我意识到不仅仅是我的枚举类型有问题,jsonb 类型的列也有类似的问题。这让我开始调查更广泛的数据库问题,并确定我的 application.properties 中的以下属性不再有效:

spring.datasource.tomcat.connection-properties = stringtype=unspecified

这是有道理的,因为我使用的是默认的 JDBC 连接池,它在 SpringBoot 2.0 中从 tomcat 更改为 hikari。为了解决这个问题,我所做的就是将 tomcat 连接属性行替换为:

spring.datasource.hikari.data-source-properties = stringtype=unspecified

关于java - Postgresql 枚举在 springboot 1.5->2.0 迁移期间中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com