gpt4 book ai didi

java - 关系数据不在 Ebean 中获取

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:23 25 4
gpt4 key购买 nike

背景

我正在使用 Play Framework (Java) 来存储数据。 Play 框架使用 Ebean将类转换为可以存储在数据库中的数据。

问题

我目前无法完全获取关系数据。我有一个 User 和一个 UserEmail 模型。 User 可以拥有多个 UserEmail

User Model Code
User Email Model Code

当我尝试获取 User 时,User 数据被正确获取,但是 UserEmail 却没有。

Fetching Code

当我专门将 fetch("emails") 添加到获取代码时

User.find.fetch("emails").where().eq("userId", testUserId).findUnique();

它看起来至少能收到电子邮件。然而,当我尝试通过

向他们展示时
return ok(Json.toJson(retrievedTestUser));

我得到 This Error

问题

有什么方法可以让 Play Framework/Ebean 自动获取电子邮件,而无需向每个查询添加 fetch("emails")?也许是注释?

如何解决上述错误?我明白为什么它会被抛出,但我该如何修复它?有没有办法让它只获取一层深?

最佳答案

我已经找到解决上述问题的方法。每个实体都应该有 id。
User 类具有用 @Id 注释的字段,但 UserEmail 没有。

UserEmail 类的 email 字段上添加 @Id 注解后,用户被正确获取并且其电子邮件列表不为空。

@Id
public String email;

我在您的代码中发现了另外一件事:
当您创建双向关系时,您应该在一侧使用 mappedBy 属性来指示这是一个关系的两端,而不是两个单独的关系。所以应该有:

@OneToMany(mappedBy="user", cascade = CascadeType.ALL)
@Constraints.Required
public List<UserEmail> emails;

关于java - 关系数据不在 Ebean 中获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746989/

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