我正在使用OpenJPA,并且想知道如何引用另一个自定义实体。假设有一个人和一个地址。两者都是我的建模实体。
人员如何正确提及地址?
这边走:
@Entity
public class Person {
@Column
@Inject
Address adr;
}
或像这样:
@Entity
public class Person {
@Column
Address adr = new Address();
}
我宁愿注入或实例化的原因是当我访问如下地址时,我看到空指针异常:
#{myBean.personA.adr.street}
因为当不从现有记录中加载对象,而是在创建新记录时使用了adr,则adr返回null
您如何解决实体中的诸多问题?我是否想念某物?顺便说一句:我使用openJPA和Webbeans
最佳答案
我将在您明确创建新的Person
时创建它。
@ManagedBean
@ViewScoped
public class Register {
private Person person;
@PostConstruct
public void init() {
person = new Person();
person.setAddress(new Address());
}
// ...
}
或者,也可以执行
Person
中的作业,这样您就无需重复该作业:@ManagedBean
@ViewScoped
public class Register {
private Person person;
@PostConstruct
public void init() {
person = Person.create();
}
// ...
}
与
@Entity
public class Person {
public static Person create() {
Person person = new Person();
person.setAddress(new Address());
return person;
}
// ...
}