我正在尝试在某些Persistent类中使用java.util.Optional。有什么解决方法可以使其正常工作?
我尝试使用UserType,但是如果不手动将其映射到SQL类型,就无法处理类似Optional的问题。
我也尝试使用JPA Converter,但它不支持参数化类型。
我可以像这样使用包装的getter和setter方法,但是它更像是hack,而不是解决方案

public class MyClass {
   private MyOtherClass other;

   public Optional<MyOtherClass> getOther() {
      return Optional.ofNullable(other);
   }

   public voud setOther(Optional<MyOtherClass> other) {
      this.other = other.orElse(null);
   }
}

谢谢!

最佳答案

您不能将java.util.Optional用作持久实体属性,因为Optional不是Serializable
但是,假设您使用的是field-based access,则可以在getter/setter方法中使用Optional容器。
然后,Hibernate可以从实体属性中获取实际类型,而getter和setter可以使用Optional:

private String name;

public Optional<String> getName() {
    return Optional.ofNullable(name);
}

09-30 15:21
查看更多