2015-09-18 61 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(); 
相關問題