我需要将Oracle XMLType列映射到hibernate实体类.有一个工作(我认为众所周知)的解决方案涉及实施UserType; 但是,我无法使用它,因为需要导入Oracle xml解析器,这反过来会导致许多问题.
我可以将xml列的值作为字符串访问并将转换保留给操作实体的代码,但是我找不到从中读取值并将其写入数据库的方法.到目前为止我尝试了什么:
String.结果 - 值读为null.如果属性是公正的Serializable,我会得到"无法反序列化"的异常.@Formula注释(CAST xmlCol as varchar2(1000)).结果 - 不存储值@Loader并把CAST在SELECT.这是最有希望的尝试 - 读取并成功存储了值,但是当加载包含xml列的实体的集合时,我得到null(@Loader如果基础表被LEFT JOIN编辑,Hibernate不使用sql ).我认为应该工作的另一种方法是将xml列作为String(用于写入)加上用于读取的虚拟字段@Formula; 然而,它看起来像是一个肮脏的黑客,我宁愿不这样做,除非我别无选择.
最后,我能做的最后一件事就是更改DB Schema(更多的是1选项,比如view + triggers,列数据类型更改),但这对我来说也不是一个好选择.
我想知道我是否遗漏了某些东西或者是否有办法让(3)工作?