我意识到我错过了一些明显的东西。不知道它是什么,希望有人能帮助我看到我没有看到的东西。
我的公司从映射文件开始,然后生成模式和 Java 文件。
我正在试图弄清楚如何映射。 我有一个表,其中的列在有限数量的字符串上只能有 1: "DOES_NOT_EXIST"、"新建"、"启动"、"运行"、"拆解"
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:数据类型不一致:预期的二进制得到数字"
我认为 HBM 映射文件应该是类似于 com.foo.StateEnum 12
有人可以指出我一些文档来做我正在尝试做的事情。
感谢您帮助我学习...
我最终创建了一个实现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>