小编Sim*_*mon的帖子

告诉 Hibernate 的 hbm2ddl 为 @Enumerated 注解字段添加 MySQL 枚举列

我正在使用 hbm2ddl 和类似于以下的 Java 代码创建数据库表:

@Entity
public  class Filter {
    public enum Type {
        TypeA, TypeB;
    }
    @Enumerated(EnumType.STRING)
    private Type type;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但对于“type”,会创建一个 VARCHAR 列,即 DDL 代码如下所示:

CREATE TABLE IF NOT EXISTS `filter` (`type` varchar(255) DEFAULT NULL)
Run Code Online (Sandbox Code Playgroud)

但我想要的是这样的:

CREATE TABLE IF NOT EXISTS `filter` (`type` enum('TypeA','TypeB') NOT NULL)
Run Code Online (Sandbox Code Playgroud)

这是否可以在 Hibernate 中声明,最好使用注释?

或者有没有办法扩展 SchemaUpdate 并覆盖以我喜欢的方式呈现枚举字段的更改脚本部分的方法?

背景:项目的 PHP 部分使用相同的数据库,我想防止插入无效值。

mysql enums hibernate hbm2ddl

5
推荐指数
1
解决办法
1164
查看次数

标签 统计

enums ×1

hbm2ddl ×1

hibernate ×1

mysql ×1