不同 JSON 字段 Play 框架键的设置值
Setting value of different JSON key to field Play framework
我正在 play 框架中创建一个 REST 服务,我有一个从请求中读取 JSON 的路由。 JSON 格式如下:
{
"email":"test@test.com",
"password":"pw",
"address":{
"city":"cityName",
"country":"countryName"}
}
然后我使用user = Json.fromJson(json, User.class);
将JSON解析为用户class。在我的数据库中,我必须 tables 具有一对一的关系,如下所示:
用户:
EMAIL VARCHAR,
NAME STRING
地址:
EMAIL VARCHAR,
CITY VARCHAR,
ADDRESS VARCHAR
其中 EMAIL 是外键。
由于我收到的JSON只有5个值,play framework将新记录保存到数据库时,Address中只保存CITY和ADDRESS,EMAIL字段保存为null。后来我无法检索相关用户记录的地址项的值,因为连接它们的外键被保存为空。 (这些是 sql 个查询:)
是否有一些注释或其他方法可以使用 JSON 中的电子邮件值作为地址 table 中的电子邮件值?
这是我编写模型的方式 classes:
@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;
}
你为什么不先尝试保存 Address,稍后当对象 Address 由 ORM[= 管理时31=] 将对象地址设置为对象 User 并持久化对象 User。
像这样:
- 解析JSON到用户对象
- 从解析的 User 对象中获取 Address。
- 坚持地址对象
- 再次将地址对象设置为用户对象
- 坚持用户对象。
希望对您有所帮助。
我正在 play 框架中创建一个 REST 服务,我有一个从请求中读取 JSON 的路由。 JSON 格式如下:
{
"email":"test@test.com",
"password":"pw",
"address":{
"city":"cityName",
"country":"countryName"}
}
然后我使用user = Json.fromJson(json, User.class);
将JSON解析为用户class。在我的数据库中,我必须 tables 具有一对一的关系,如下所示:
用户:
EMAIL VARCHAR,
NAME STRING
地址:
EMAIL VARCHAR,
CITY VARCHAR,
ADDRESS VARCHAR
其中 EMAIL 是外键。
由于我收到的JSON只有5个值,play framework将新记录保存到数据库时,Address中只保存CITY和ADDRESS,EMAIL字段保存为null。后来我无法检索相关用户记录的地址项的值,因为连接它们的外键被保存为空。 (这些是 sql 个查询:)
是否有一些注释或其他方法可以使用 JSON 中的电子邮件值作为地址 table 中的电子邮件值?
这是我编写模型的方式 classes:
@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;
}
你为什么不先尝试保存 Address,稍后当对象 Address 由 ORM[= 管理时31=] 将对象地址设置为对象 User 并持久化对象 User。
像这样:
- 解析JSON到用户对象
- 从解析的 User 对象中获取 Address。
- 坚持地址对象
- 再次将地址对象设置为用户对象
- 坚持用户对象。
希望对您有所帮助。