实体字段中的 Java 8 可选

标签 java hibernate java-8 option-type

<分区>

我可以在 hibernate 实体的字段中使用 Optional 吗?也许有一些自定义用户类型?

我知道我可以在使用 AccesType.FIELD 的方法中使用它(无论如何我都使用 AccesType.FIELD)。

我为什么要这个?好吧,我想尽可能远离空值。

最佳答案

您不应该将 Optional 用作类中的字段(无论是否用于 Hibernate)。

Javadoc 所述,它是一个基于值的类,因此不可序列化,并且使用引用相等性 (==) 和身份哈希码会产生不可预测的结果。

相反,您可以存储目标类的实例(在关系数据库中可以为 null),并从访问器返回一个 Optional(不是 getter,Hibernates 希望返回与字段相同的类,如果我没记错的话).

希望这会有所帮助。

关于实体字段中的 Java 8 可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36173984/

相关文章:

java - 后备默认意图只能匹配 1 个以上的单词

java - Picocli,如何识别具有可选值和自定义类型转换器的选项的存在

java - 使用第 3 方 OAuth2 服务器登录 Spring Security 应用程序

java - Hibernate 一对多无法初始化集合

Hibernate:限制一对多查询

java - C3P0 托管连接池无法从其主要资源或工厂资源中获取资源

java - 使用java 8流迭代map的map内的列表

java - 断言列表恰好包含一个满足条件的元素

eclipse - 在 Eclipse 中强制执行 JDK8 Doclint

java - 在 mysql 模式下使用 h2 INSERT IGNORE 引发主键违规