@RequestBody не преобразует вложенный объект из полезной нагрузки в сущность с переменной @ManyToMany - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь сделать запрос PUT через curl.В полезной нагрузке, которую я посылаю через curl, у меня есть вложенный объект, который я хочу, чтобы Spring читал как сущность.Но когда я отправляю полезную нагрузку через контроллер и после того, как @RequestBody читает полезную нагрузку, Spring не может преобразовать этот вложенный объект в желаемую сущность.(Spring возвращает null)

Это моя команда curl (сокращенно):

curl -X PUT ... --data "{
  ...
  \"playlistValue\":{
    \"1\":{
      \"filename\":\"test.mp4\",
      \"id\":\"2\"},
    \"2\":{
      \"filename\":\"test2.mp4\",
       \"id\":\"1\"}}}"

Объект, который является значением \ "playlistValue \", является другим объектом, существующим в Spring.Эта сущность - Видео.Объектом, к которому я делаю запрос PUT, является Playlist.

@Entity
public class Playlist {
    private @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="playlist_id") 
    long id;

    @ManyToMany
    @JoinTable(name="playlist_values",
        joinColumns=@JoinColumn(name="playlist_id"),
        inverseJoinColumns= @JoinColumn(name="video_id"))
    private Map<Integer, Video> playlistValue;
}

@Entity
public class Video {
    private @GeneratedValue @Id @Column(name="video_id") Long id;
    private @ManyToMany(mappedBy= "playlistValue") Set<Playlist> playlists;
}

Я хочу, чтобы Spring мог преобразовывать вложенный объект, который я отправляю через полезную нагрузку в curl, в другой объект, Video.Если есть другой способ сделать запрос PUT, то как?

1 Ответ

0 голосов
/ 03 апреля 2019

Я смог сделать свой запрос PUT, поместив это в контроллер:

@RequestBody Map<Integer,Video> newPlaylist...

Вместо этого:

@RequestBody Playlist ...

Spring смог преобразовать видео на картек объекту Video, и, таким образом, я смог выполнить запрос PUT, используя @PathVariable, чтобы найти Id моего списка воспроизведения, установить его и затем сохранить.

...