Java 关系数据未存储在Ebean中 出身背景

Java 关系数据未存储在Ebean中 出身背景,java,database,model-view-controller,playframework,ebean,Java,Database,Model View Controller,Playframework,Ebean,我正在使用Java来存储数据。Play框架使用 将类转换为可存储在数据库中的数据 我在创建一对多数据库关系时遇到问题。我试图在用户模型和用户电子邮件模型之间建立一种关系。其中每个用户可能有许多用户电子邮件。 问题 当我创建一个用户,然后添加一个UserEmail时,将UserEmail保存在数据库中并不困难。我试过很多方法 通过向列表中添加电子邮件,然后保存用户 结果:新用户以正确的信息存储在数据库中,但数据库中未存储新用户电子邮件 通过在UserEmail中创建静态create方法 结果:数

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

我在创建一对多数据库关系时遇到问题。我试图在用户模型和用户电子邮件模型之间建立一种关系。其中每个用户可能有许多用户电子邮件。

问题 当我创建一个用户,然后添加一个UserEmail时,将UserEmail保存在数据库中并不困难。我试过很多方法

通过向列表中添加电子邮件,然后保存用户 结果:新用户以正确的信息存储在数据库中,但数据库中未存储新用户电子邮件 通过在UserEmail中创建静态create方法 结果:数据库中未存储任何UserEmail 通过向列表中添加电子邮件,然后保存用户电子邮件和用户 结果:新用户以正确的信息存储在数据库中,但数据库中未存储新用户电子邮件 问题 在Java中,如何创建和存储关系数据?有没有什么我错过的步骤?我是否必须向模型添加另一个注释才能使其正常工作

使现代化 经过进一步测试后,看起来使用新的UserEmail保存用户对象将把它保存到数据库中。但是,当我获取用户时

User retrievedTestUser = User.find.where().eq("userId", testUserId).findUnique();
它不会检索用户电子邮件

添加有关反向字段的信息:


上述问题是因为UserEmail类中缺少@Id注释。 添加以下代码可以解决此问题:

@Id
public String email;

retrievedTestUser.emails返回什么?Null?@Adil它返回空,因此[]。能否在用户模型内的OneToMany注释中添加mappedBy=user\u tbl\u name值?这可能会有所帮助,因为您没有通过fetchemails显式地“急切地获取”用户电子邮件。在您实际执行一些操作(如呼叫大小或尝试迭代列表)之前,电子邮件列表不会通过延迟加载填充。也许您应该创建一个新问题,代码显示列表为空?@Rob我尝试将mappedBy属性添加到@OneToMany注释中。无论是否使用mappedBy值,电子邮件和用户都已正确保存和接收。然而,当我试图获得用户的用户信息是有效的,除了电子邮件是空白的。但是电子邮件被正确地存储在数据库中。
@Id
public String email;