JPA/Hibernate中@Embedded字段全为NULL时如何避免空指针?
解决Hibernate嵌入式对象全字段为null时的初始化问题
可以通过为@Embedded注解添加optional = false属性,强制Hibernate始终实例化嵌入式对象,即便其所有字段对应数据库值均为null:
@Entity public class Person { @Embedded(optional = false) private final Address home = new Address(); }
原理说明
optional = false会告知Hibernate,该嵌入式属性是对象的必要组成部分,不允许为null。因此即使数据库中Address对应的所有字段都为null,Hibernate也会实例化一个Address对象赋值给home,而非将其置为null。
需要注意的是,这个属性仅控制Hibernate的对象实例化逻辑,和数据库列的nullable约束无关,无需修改数据库表结构的非空设置。
内容的提问来源于stack exchange,提问作者S. Shao
相关产品推荐
相关产品推荐

