当前位置: 首页 > 面试题库 >

映射FunctionalJava选项 与休眠

顾乐心
2023-03-14
问题内容

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

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

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


问题答案:

我建议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();
}

这符合您的需求吗?



 类似资料:
  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th

  • 问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么

  • 问题内容: 我有一个颜色枚举 我有包含它的MyEntity。 我已经有一个UserType来映射我的枚举。 您知道如何在Hibernate hbm.xml中映射枚举集吗? 我需要一个UserType还是最简单的方法? 谢谢 编辑: 只是为了说明一下,我正在寻找 hbm.xml 配置而不是@CollectionOfElements注释 问题答案: 我使用EnumSet映射线程中的解决方案,该解决方案

  • 我正在我的java应用程序中使用spring data mongodb框架来将我的应用程序数据持久化在mongodb中。在我的java模型类中,我有两个字段。

  • 问题内容: 在hibernate映射中,我设置了属性,这将获取父级的所有子级记录。 整个应用程序都在使用它。 这在我的应用程序的特定模块上造成了性能问题,我只想在其中获取父记录。 由于无法在其他许多地方使用该属性,因此我无法将其更改为。有没有办法来解决这个问题? 请让我知道是否需要更多信息。 问题答案: 这些在hibernate状态并不具有这种功能,因为它尊重您的习惯。因此,我建议解决您的需求的方

  • 问题内容: 我在MySQL表(TINYINT(1))中具有BOOLEAN类型,并且尝试映射实体中的布尔字段,但这会生成异常: 我将实体中的字段更改为字节并进行了相应的更改,因此它的作用是布尔值,我得到: 我尝试在字段上使用注释: 但我得到: 问题答案: 从我在这里读到的内容: org.hibernate.HibernateException:maegul.users中列admin的列类型错误。找到