Ebean 中的@OneToMany 关系

@OneToMany relation in Ebean

我正在尝试编写一个包含人员和应用程序的系统。每个人可以申请不同的申请。

我正在尝试在人员对象上应用 @oneToManyRelation(当从数据库中检索人员时,我想重新获取他们申请的每个应用程序的列表)。

这是我的代码:

@Entity
@Table(name="t_person")
public class person extends Model {
    @id
    @column(name="PERSON_ID")
    private string ID;

    more properties...

    @OneToMany(targetEntity=application.class, mappedBy="SOLDIER_ID")
    private ArrayList<application> ApplicationList;

    public ArrayList<application> getApplicationList() {
        return ApplicationList;
    }

    public void setApplicationList(ArrayList<application> applicationList) {
        ApplicationList = applicationList;
    }
}

@Entity
@Table(name="T_APPLICATION")
public class application extends Model {
        @Id
        @Column(name="APPLICATION_ID")
        private int Id;

        @ManyToOne
        @JoinColumn(name="PERSON_ID")
        private person Person;
}

我正在使用 Activator 和 Oracle 数据库。当我检索一个应用程序时,我得到了 person 对象,但是当检索一个人时,应用程序列表为空。

我哪里错了?

在您的注释上使用 mappedBy 以获取反向属性;这不是您应该在此处使用的列名称,而是其他对象上的属性名称。

个人:

@OneToMany(mappedBy = "person", fetch = FetchType.EAGER)
ArrayList<Application> applicationList;

申请中:

@ManyToOne
Person person;

您可能需要在适用的地方添加 @JoinColumn。正如评论中所说,fetch = FetchType.EAGER 也应该有所帮助。

我发现了问题。 问题是 applicationList 是 ArrayList<> 而不是 List<>。 一旦我将 ArrayList 更改为列表。它正在工作。