【问题标题】:MySQL enum with hibernateMySQL 枚举与休眠
【发布时间】:2009-07-02 20:46:03
【问题描述】:

我有一个使用枚举的数据库表。这已经在使用 hibernate(使用 XML),我正在尝试将其转换为注释,因为这是仍然使用 xml 表示法的最后一部分。

列定义:

enum('Active','Pending','Cancelled','Suspend')

以下作品:

<property
    name="status"
    column="STATUS"
    type="string"
    not-null="true" />

这不起作用:

@Column(name = "status")
public String status;

注解样式在启动时会导致以下异常: org.hibernate.HibernateException:UserDTO 中列状态的列类型错误。找到:枚举,预期:varchar(255)

我有什么办法可以强制它像使用 XML 表示法那样接受字符串吗?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    我想通了。应该是:

    @Column(name="status", columnDefinition="enum('Active','Pending','Cancelled','Suspend')")
    public String status;
    

    【讨论】:

    • 您的解决方案至少对于 MySQL 数据库是正确的,但对于测试中使用的 H2 数据库(例如自动创建模式的情况)则失败。似乎也不是 100% 可移植的,据我记得 PostgresSQL 也存在问题(至少如果我们期望架构会自动生成)。
    • 它也适用于我。我有一个额外的注释@Enumerated(EnumType.STRING),但它导致了一个错误was annotated as enumerated, but its java type is not an enum [java.lang.String]
    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 2011-10-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多