我有一个数据库模型类Project
,它有两个嵌入式对象字段:
@Embedded
public ContacterInfo contacter = new ContacterInfo();
@Embedded
public CompanyInfo company = new CompanyInfo();
因为我不想每次使用
is null
和company
时都检查contacter
,所以我还是决定创建它们。我所期望的是,当数据库中没有
contacter
的内容时,Java会为我创建一个新的ContacterInfo
,然后可以将其用于新数据。但是实际上,我发现contacter
仍可以设置为null
。我怀疑JPA从数据库加载了null
并用它覆盖了我的新创建对象。我怎样才能解决这个问题 ?
最佳答案
您可以使用JPA实体侦听器(ObjectDB has a good explication)。例如:
@PostLoad
void onPostLoad() {
if (contacter == null) {
contacter = new ContacterInfo();
}
if (company == null) {
company = new CompanyInfo();
}
}
每次JPA加载当前实体的实例时,都会调用
onPostLoad
。祝好运!