java - JPA 中多对多映射的 POST JSON 主体应该是什么?
问题描述
假设我有两个实体 User.java 和 Topic.java
@Entity
@Table(name="T_USR")
@Getter
@Setter
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="USR_ID", updatable=false, nullable=false)
private Long userId;
@Column(name="FST_NM", nullable=false)
private String firstName;
@Column(name="LST_NM")
private String lastName;
@Column(name="EMAIL")
private String email;
@Column(name="CREATED_DT")
@CreationTimestamp
private Date createdDate;
@ManyToMany
@JoinTable(name="T_USR_TOPIC",
joinColumns= { @JoinColumn(name="USER_ID") },
inverseJoinColumns= { @JoinColumn(name="TOPIC_ID") })
private Set<Topic> topics;
}
@Entity
@Table(name="T_TOPIC")
@Getter
@Setter
public class Topic {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="TOPIC_ID",updatable=false, nullable=false)
private Long topicId;
@Column(name="TOPIC_TAG")
private String topicName;
@Column(name="TOPIC_DS")
private String topicDesc;
@ManyToMany(mappedBy="topics")
private Set<User> users;
}
我在 T_TOPIC 表中已经有几个条目说
TOPIC_ID | TOPIC_DS | TOPIC_TAG
1 | 用户界面 | 角
2 | 爪哇 | 春天
我想注册一个新用户。但是如何形成 JSON 主体呢?应该像
{
"firstName": "Myname",
"lastName": "LastName",
"email": "example@example.com",
"interests": [1,2]
}
请求对象。
@Getter
@Setter
public class UserRequest {
@NotBlank
@JsonProperty
private String firstName;
@Email
@NotBlank
@JsonProperty
private String lastName;
@NotBlank
@JsonProperty
private String email;
@JsonProperty("interests")
Set<Long> topics;
}
另外,使用双向多对多映射是个好主意吗?