Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Play/Ebean无法获取多个相关对象的所有属性_Java_Playframework_Ebean - Fatal编程技术网

Java Play/Ebean无法获取多个相关对象的所有属性

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

我有一个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 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();