一尘不染

映射FunctionalJava选项 与休眠

hibernate

我有一个hibernate映射的Java对象,JKL其中充满了许多正常的可hibernate映射字段(例如字符串和整数)。

我向其中添加了一个新的嵌入式字段(该字段位于同一表中-
而不是映射)asdf,它是一个fj.data.Option<ASDF>。我已经明确表示该字段可能实际上不包含任何内容(而不是null每次访问它都必须进行处理)。

如何在JKL.hbm.xml文件中设置映射?我想hibernate来自动转换null数据库到nonefj.data.Option<ASDF>,当它获取对象。它还应将的非空实例转换ASDFsomefj.data.Option<ASDF>。我还有别的骗术吗?谢谢。


阅读 262

收藏
2020-06-20

共1个答案

一尘不染

我建议Option在访问器(getter和setter)中引入FunctionalJava
,同时让Hibernate处理允许使用的简单Java字段null

例如,对于可选Integer字段:

// SQL
CREATE TABLE `JKL` (
    `JKL_ID` INTEGER PRIMARY KEY,
    `MY_FIELD` INTEGER DEFAULT NULL
)

您可以直接映射Hibernate私有字段:

// Java
@Column(nullable = true)
private Integer myField;

然后Option,您可以在访问者边界处进行介绍:

// Java
public fj.data.Option<Integer> getMyField() {
    return fj.data.Option.fromNull(myField);
}

public void setMyField(fj.data.Option<Integer> value) {
    myField = value.toNull();
}

这符合您的需求吗?

2020-06-20