0

我意识到我遗漏了一些明显的东西。不知道它是什么,希望有人能帮助我看到我没有看到的东西。

我的公司从映射文件开始,生成模式和 java 文件。

我想弄清楚如何映射。我有一个表,其中的列只能在有限数量的字符串上包含 1:'DOES_NOT_EXIST'、'NEW、INITIATILIZE'、'RUNNING'、'TEARDOWN'

TABLE STATE_MACHINE
    ....
    STATE VARCHAR2(32)
.....


public enum StatEnum {
    DOES_NOT_EXIST, NEW,INITIATILIZE, RUNNING, TEARDOWN
}

我们想做的是类似的事情

StateMachine machine = new StateMechine();
machine.state=StatEnum.NEW;
....
Persistance.save(machine)

问题是我收到“无法提交事务:无法执行 JDBC 批量更新:ORA-00932:不一致的数据类型:预期的 BINARY 得到了 NUMBER”

我认为 HBM 映射文件应该类似于 com.foo.StateEnum 12

有人可以指出我正在尝试做的一些文档。

谢谢你帮助我学习...

4

1 回答 1

0

我最终创建了一个实现 EnhancedUserType 和 ParameterizedType 的类。

在实现上述类的包中,我放置了我的枚举类。

我的休眠 xml 有

    <property name="state" column="state">
        <meta attribute="use-in-tostring">true</meta>
        <meta attribute="field-description">state types</meta>
        <type name="com.....h.core.domain.usertype.MyStrEnumUserType">
            <param name="enumClassname">com.......core.domain.usertype.StateTypeEnum</param>
        </type>
    </property>
于 2012-05-08T20:09:04.007 回答