如果数据库中的当前字段为空,则创建新对象

时间:2014-09-23 06:44:30

标签: java jpa playframework

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

@Embedded
public ContacterInfo contacter = new ContacterInfo();

@Embedded
public CompanyInfo company = new CompanyInfo();

'因为每次使用is nullcompany时我都不想查看contacter,所以无论如何我决定创建它们。

我的期望是,当数据库中contacter没有任何内容时,Java会为我创建一个新的ContacterInfo,然后我可以将它用于新数据。但事实上,我发现contacter仍然可以设置为null。我怀疑JPA从数据库加载null并用它覆盖我的新创建对象。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您可以使用 JPA实体侦听器ObjectDB has a good explication)。例如:

@PostLoad 
void onPostLoad() {
   if (contacter == null) {
      contacter = new ContacterInfo();
   }
   if (company == null) {
      company = new CompanyInfo();
   }
}

每次JPA加载当前实体的实例时,都会调用onPostLoad

祝你好运!