我正在使用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;
    }

    // ...
}

10-06 05:55