我正在尝试在某些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);
}