我有一个数据库模型类Project
,它有两个嵌入的对象字段:
@Embedded
public ContacterInfo contacter = new ContacterInfo();
@Embedded
public CompanyInfo company = new CompanyInfo();
'因为每次使用is null
和company
时我都不想查看contacter
,所以无论如何我决定创建它们。
我的期望是,当数据库中contacter
没有任何内容时,Java会为我创建一个新的ContacterInfo
,然后我可以将它用于新数据。但事实上,我发现contacter
仍然可以设置为null
。我怀疑JPA从数据库加载null
并用它覆盖我的新创建对象。
我该如何解决这个问题?
答案 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
。