【发布时间】:2018-12-14 23:26:16
【问题描述】:
我有 2 个实体:用户和用户别名。用户有复合PK。我有一些问题:
-
如何在 Spring MVC 控制器中解析 JSON 以填充 User 和 UserPK 对象,例如使用以下数据:
{ “身份证”:1, “名称”:“新用户”, “别名”:[ "别名1", “别名2”, “别名 3” ] }
如果我写public void createUser(@RequestBody User user),我显然会遇到异常。
如何编写控制器方法来将数据解析到两个实体?
- 现在我使用 DTO 对象来解析带有 @RequestBody 的 JSON 并填充模型。但我不确定这是完成这项任务的好方法。
用户.java
@Entity
@Table(name = "user")
public class User {
@EmbeddedId
private UserPK userid;
public User(){}
public User(UserPK userid) {
this.userid = userid;
this.aliases = aliases;
}
@OneToMany(
mappedBy = "user",
cascade = CascadeType.ALL,
orphanRemoval = true
)
public List<UserAlias> aliases = new ArrayList<>();
}
UserPK.java
@Embeddable
public class UserPK implements Serializable {
@NotNull
@Column(name = "id")
private Integer id;
@NotNull
@Column(name = "name")
private String name;
public UserPK(){};
public UserPK(Integer id, String name){
this.id = id;
this.name = name;
}
}
用户别名.java
@Entity
@Table(name = "user_alias")
public class UserAlias {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@Column(name = "user_alias")
private String userAlias;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(
referencedColumnName = "id"),
@JoinColumn(
referencedColumnName = "name")
})
@JsonIgnore
public User user;
public UserAlias(){}
public UserAlias(String userAlias) {
this.userAlias = userAlias;
}
【问题讨论】:
标签: java json spring-mvc jpa jackson