Каким должно быть тело POST JSON для отображения ManyToMany в JPA? - PullRequest
1 голос
/ 25 мая 2020

Допустим, у меня есть два объекта User. java и Topi c. 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_TOPI C, скажем TOPIC_ID | TOPIC_DS | TOPIC_TAG 1 | UI | Angular 2 | Java | весна

Я хочу зарегистрировать нового пользователя. Но как сформировать тело 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;

}

Также, стоит ли использовать двунаправленное отображение ManyToMany?

...