Java Play/Ebean无法获取多个相关对象的所有属性
我有一个Play 2.2应用程序,我使用的是ebean 3.2.2。 我有两个表:UserModel和Schedule。一个用户模型可以有一个计划,一个计划可以有多个用户模型。 下面是这些类的外观:Java Play/Ebean无法获取多个相关对象的所有属性,java,playframework,ebean,Java,Playframework,Ebean,我有一个Play 2.2应用程序,我使用的是ebean 3.2.2。 我有两个表:UserModel和Schedule。一个用户模型可以有一个计划,一个计划可以有多个用户模型。 下面是这些类的外观: @Entity public class UserModel extends Model { @Id public String email; public String other, attributes; @ManyToOne public Schedu
@Entity
public class UserModel extends Model {
@Id
public String email;
public String other, attributes;
@ManyToOne
public Schedule defaultSchedule;
@OneToMany
public List<Task> tasks;
}
@Entity
public class Schedule extends Model {
@Id
public Long id;
@OneToMany
public List<UserModel> owners;
public String other, attributes;
}
当我运行查询时:
UserModel.find.where().eq("email", email).findUnique()
我查看UserModel.defaultSchedule内部,发现只填充了Id其余字段都为空,这就是我试图解决的问题。
这让我特别困惑的原因是我还有一门课:
@Entity
public class Task extends Model {
@Id
public Long taskId;
public Boolean completed;
@ManyToOne
public UserModel assignedTo;
}
当我像这样查询此类对象时:
Task.find.where().eq("assignedTo.email", email).eq("completed", false).findList();
我发现Task.assignedTo的所有字段都已填充(不仅仅是Id)。为什么在这种情况下填充字段,而不是第一种情况?解决方案在于我是如何执行查询的。通过向查询添加一个fetch,我能够检索相关对象的所有属性:
UserModel.find.fetch("defaultSchedule").where().eq("email", email).findUnique();
解决办法在于我是如何进行查询的。通过向查询添加一个fetch,我能够检索相关对象的所有属性:
UserModel.find.fetch("defaultSchedule").where().eq("email", email).findUnique();