2015-09-18 22 views
1

我有一个Play 2.2应用程序,我使用的是ebean 3.2.2。 我有两个表:UserModel和Schedule。 UserModel可以有一个Schedule,Schedule可以有很多UserModels。 这里是类的样子:播放/ Ebean没有获取ManyToOne相关对象的所有属性

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

回答

0

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

UserModel.find.fetch("defaultSchedule").where().eq("email", email).findUnique(); 
相关问题