我有这个 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)
这不会改变任何东西。
据我所知,您有一些配置缺失。
要修复它,您必须重写一点您的
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
参数。