使用Hibernate映射FunctionalJava选项<Type>

Mik*_*icz 6 java functional-programming hibernate option functional-java

我有一个hibernate映射的Java对象,JKL它充满了一堆普通的hibernate-mappable字段(比如字符串和整数).

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

如何在我的JKL.hbm.xml文件中设置映射?我想Hibernate来自动转换null数据库到nonefj.data.Option<ASDF>,当它获取对象.还应的一个非空实例转换ASDFsomefj.data.Option<ASDF>.我还有其他的诡计吗?谢谢.

ms-*_*-tg 12

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

例如,对于可选Integer字段:

// SQL
CREATE TABLE `JKL` (
    `JKL_ID` INTEGER PRIMARY KEY,
    `MY_FIELD` INTEGER DEFAULT NULL
)
Run Code Online (Sandbox Code Playgroud)

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

// Java
@Column(nullable = true)
private Integer myField;
Run Code Online (Sandbox Code Playgroud)

然后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();
}
Run Code Online (Sandbox Code Playgroud)

这是否适合您的需求?