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 更改为列表。它正在工作。
我正在尝试编写一个包含人员和应用程序的系统。每个人可以申请不同的申请。
我正在尝试在人员对象上应用 @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 更改为列表。它正在工作。