Sim*_*mon 5 mysql enums hibernate hbm2ddl
我正在使用 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 部分使用相同的数据库,我想防止插入无效值。
我相信这会很复杂,因为定义 java 处理的 sql 类型的 java.sql.Types 没有枚举类型(因为它不是根据 SQL-92 的标准化类型)。
如果是这种情况,您可以创建一个 hibernate 自定义 UserType 来扩展 EnumType 并相应地设置 sqlType,但由于 java.sql.Types 不处理它,我不知道如何使用本机 sql 枚举。
此致!
归档时间: |
|
查看次数: |
1164 次 |
最近记录: |