我有一个HibernateMap的Java对象JKL
,它包含一组常规的Hibernate可Map字段(如字符串和整数)。
我向其中添加了一个新的嵌入字段(它位于同一个表中--不是Map),即asdf
,它是一个fj.data.Option<ASDF>
。我已经明确表示这个字段实际上可能不包含任何内容(而不是每次访问它时都必须处理null
)。
如何在JKL.hbm.xml
文件中设置Map?我希望Hibernate在检索对象时自动将数据库中的null
转换为fj.data.Option<ASDF>
的none
。它还应该将ASDF
的非空示例转换为fj.data.Option<ASDF>
的some
。
我还需要做什么其他的诡计吗?
3条答案
按热度按时间1zmg4dgp1#
我建议在访问器(getter和setter)中引入FunctionalJava的
Option
,而让Hibernate处理一个允许为null
的简单Java字段。例如,对于可选的
Integer
字段:您可以直接MapHibernate私有字段:
然后,您可以在访问器边界引入
Option
:这能满足你的需求吗?
vjhs03f72#
您可以使用Hibernate的定制Map类型。文档在这里。下面是mapping Scala's Option的一个类似于HibernateMap的示例。
简单地说,您需要扩展
org.hibernate.UserType
接口。您还可以创建一个具有JKL
类型子类型的泛型类型基类,类似于您在Scala示例中看到的内容。unguejic3#
我认为使用
getter/setter
更简单,但这里有一个我如何使其工作的示例:(它适用于数字和字符串,但不适用于日期(
@Temporal
注解有错误))。