java - 将不同 JSON 键的值设置为 Field Play 框架

标签 java sql json playframework ebean

我正在 play 框架中创建一个 REST 服务,并且我有一个从请求中读取 JSON 的路由。 JSON 的格式如下:

{
"email":"test@test.com",
"password":"pw",
"address":{
"city":"cityName",
"country":"countryName"}
}

然后我使用 user = Json.fromJson(json, User.class); 将 JSON 解析为用户类。在我的数据库中,我必须具有一对一关系的表,如下所示:

用户:

EMAIL VARCHAR,
NAME STRING

地址:

EMAIL VARCHAR,
CITY VARCHAR,
ADDRESS VARCHAR

其中 EMAIL 是外键。

由于我收到的 JSON 只有 5 个值,因此当 Play 框架将新记录保存到数据库时,在 Address 中仅保存 CITY 和 ADDRESS,而 EMAIL 字段保存为 null。后来我无法检索相关用户记录的地址项的值,因为连接它们的外键被保存为空。 (这些是sql查询:)

是否有一些注释或其他方式可以使用 JSON 中的电子邮件值作为地址表中的电子邮件值?

这是我编写模型类的方式:

@Entity
@Table(name = "User")
public class User extends Model{
    @Id
    @Column(length = 80)
    private String email;
    @Column(length = 100)
    private String password;
    @OneToOne(cascade =  CascadeType.ALL, mappedBy = "user")
    private Address address;
}

@Entity
@Table(name = Address
public class Address extends Model{
    @OneToOne()
    @JoinColumn(name = "email")
    private User user;

    @Column(length = 100)
    private String city;
    @Column(length = 100)
    private String country;
}

最佳答案

为什么不先尝试保存地址,稍后当对象地址ORM管理时,将对象地址设置为对象用户并保留对象用户。

类似这样的事情:

  • 将 JSON 解析为 User 对象
  • 从解析的User对象中获取地址
  • 保留地址对象
  • 再次将地址对象设置为用户对象
  • 保留用户对象。

我希望这能有所帮助。

关于java - 将不同 JSON 键的值设置为 Field Play 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231585/

相关文章:

android - 如何处理 JSON 负载的解密

java - JList:按向上/向下按钮排序

java - JsonFormat.printer().print() 是如何工作的?

mysql - 为什么查询只显示第一行?

json - 从黑莓中的 Json 获取数据

java - 使用未知 key 解析 JSON?

java - 进程类的 wait 方法不返回

java - 如何在没有托管 ZPL 打印机的情况下将 ZPL 命令转换为图像

php - PHP 中如何将数组赋值给字符串?

c# - 将查询结果传递给 SSIS 中的变量