我有一个数据库模型类Project,它有两个嵌入式对象字段:

@Embedded
public ContacterInfo contacter = new ContacterInfo();

@Embedded
public CompanyInfo company = new CompanyInfo();


因为我不想每次使用is nullcompany时都检查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

祝好运!

09-04 18:29