gpt4 book ai didi

java - Play/Ebean 未获取 ManyToOne 相关对象的所有属性

转载 作者:太空宇宙 更新时间:2023-11-04 13:26:04 25 4
gpt4 key购买 nike

我有一个 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)。
为什么在本例中填充了字段,而不是第一种情况?

最佳答案

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

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

关于java - Play/Ebean 未获取 ManyToOne 相关对象的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32647435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com