我正在尝试在某些Persistent类中使用java.util.Optional
。是否有任何解决方法使其工作?
我已经尝试过使用UserType,但不能处理像Optional这样的东西而不用手工将它映射到SQL类型(不可接受)
我也尝试使用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);
}
}
谢谢!
答案 0 :(得分:31)
正如this blog post中所述,您不能将java.util.Optional
用作持久化实体属性,因为Optional
不是Serializable
。
但是,假设您使用field-based access,则可以在getter / setter方法中使用Optional
容器。
Hibernate可以从entity属性中获取实际类型,而getter和setter可以使用Optional
:
private String name;
public Optional<String> getName() {
return Optional.ofNullable(name);
}