当PSQL列类型为字符(2)时如何在Spring/Hibernate中定义列类型

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

我有这个 Postgres

CREATE TABLE
声明

CREATE TABLE public.foo (
                                  id bigint NOT NULL,
                                  language character(2) NOT NULL,
                                  updated timestamp with time zone NOT NULL
);

现在,这就是我尝试在 Kotlin

language
 中定义列 
@Entity foo

的方式
...
@Enumerated(EnumType.STRING)
@Column val language: AvailableLanguages,
...

AvailableLanguages
enum

enum class AvailableLanguages {
    fr, en
}

但是,这给了我错误

... org.hibernate.tool.schema.spi.SchemaManagementException:架构验证:表 [foo] 中的列 [语言] 中遇到错误的列类型;找到了 [bpchar (Types#CHAR)],但期待 [varchar(255) (Types#VARCHAR)]

我试过了

@Column(length = 2)

这不会改变任何东西。

spring spring-boot hibernate kotlin
1个回答
0
投票

据我所知,您有一些配置缺失。

要修复它,您必须重写一点您的

sql
,仅此而已。

CREATE TABLE public.foo (
                                  id bigint NOT NULL,
                                  language varchar(2) NOT NULL,
                                  updated timestamp with time zone NOT NULL
);

因为休眠默认列设置为

String
字段是
varchar
,但如果你想更改它,你必须在
columnDefinition
注释中设置
@Column
参数。

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