我正在使用 jpa-buddy 从 jpa(hibernate)实体生成 liquibase 变更日志(sql 格式)。 我正在使用 hibernate-types-55 将 java Enum 映射到 posgres Enum。我这样做如下:
@Entity
@TypeDef(
name = "pgsql_enum",
typeClass = PostgreSQLEnumType.class
)
public class MyEntity {
@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
private MyEnumType myEnum;
}
使用 jpa-buddy 生成的 DDL 是:
CREATE TABLE my_entity
(
my_enum VARCHAR(255),
);
删除时
@Enumerated(EnumType.STRING)
我明白了
CREATE TABLE my_entity
(
my_enum UNKNOWN__COM.VLADMIHALCEA.HIBERNATE.TYPE.BASIC.POSTGRESQLENUMTYPE,
)
问题是我无法从实体生成 postgres 枚举类型。
我期待的是生成的 DDL,如下所示:
create type my_enum_type as enum ('ENUM1', 'ENUM2', 'ENUM3');
CREATE TABLE my_entity (
my_enum my_enum_type,
);
过去有人成功做到过吗?
谢谢
最佳答案
我发现问题与您的问题相同:
Java Enums, JPA and Postgres enums - How do I make them work together?
导入 Hibernate-core.jar
后,您必须创建 MyEnumConverter.class
。
根据您的情况,请尝试:
@TypeDef(name="myEnumConverter", typeClass=MyEnumConverter.class)
public @Entity class MyEntity {
public static enum Mood {ENUM1, ENUM2, ENUM3}
@Type(type="myEnumConverter") MyEnumType myEnum;
}
但我认为,使用 JPA 实体不利于创建表。
您应该通过 SQL native 创建表、 View 等,如果运行成功 SQL 语句,则创建表。
关于postgresql - 有没有办法使用 hibernate TypeDef 从 jpa 实体生成 liquibase 变更日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74364584/