Play / Ebean没有获取ManyToOne相关对象的所有属性

时间:2015-09-18 08:34:40

标签: java playframework ebean

我有一个Play 2.2应用程序,我正在使用ebean 3.2.2。 我有两个表:UserModel和Schedule。 UserModel可以有一个Schedule,而Schedule可以有许多UserModel。 这是类的样子:

@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进行更新,如下所示:

userModel.defaultSchedule = newSchedule;
userModel.update();

当我运行查询时:

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)。
为什么在这种情况下填充字段,但不是第一种情况?

1 个答案:

答案 0 :(得分:0)

解决方案是我如何进行查询。通过向查询添加提取,我能够检索相关对象的所有属性:

UserModel.find.fetch("defaultSchedule").where().eq("email", email).findUnique();