Ebean中的@OneToMany关系

时间:2016-05-04 08:03:38

标签: java ebean relationships activator

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

我试图在人物对象上应用@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 DB。当我检索一个应用程序时,我得到了person对象,但是当你找回一个人时,应用程序列表为空。

我哪里错了?

2 个答案:

答案 0 :(得分:0)

对注释使用mappedBy反向属性;它不是你应该在这里使用的列名,而是其他对象上属性的名称。

On Person:

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

申请时:

@ManyToOne
Person person;

您可能需要在适用的地方添加@JoinColumn。如评论中所述,fetch = FetchType.EAGER也可以提供帮助。

答案 1 :(得分:0)

我发现了这个问题。 问题是applicationList是一个ArrayList&lt;&gt;而不是列表&lt;&gt;。 只要我将ArrayList更改为List。它正在发挥作用。