Я использую Spring Data Rest
с Spring Boot
2.1.1.RELEASE.
У меня есть класс User
с отношением @ManyToMany
к классу Skill
.
- Когда я создаю
POST
для создания пользователя с его навыками, все работает нормально. - Когда я делаю
PUT
для обновления пользователя, навыки не обновляются, ошибка не выдается. - Но когда я делаю
PATCH
вместо PUT
, навыки корректно обновляются.
Кто-нибудь сталкивался с подобной проблемой?Я нашел другой (старый) вопрос по этому поводу, но решения не существует ( Spring Data Rest - PUT не работает для связанных ссылочных типов? )
Возможно, я что-то пропустил,где-то ...
(код с использованием Lombok)
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
@ManyToMany
@JoinTable(name="user_skills")
private List<Skill> skills = new ArrayList<>();
}
@Entity
@Getter
@Setter
@NoArgsConstructor
@ToString
public class Skill {
@Id
@GeneratedValue
private Long id;
private String name;
}
Я делаю PUT
со следующим JSON
содержимым:
{
"id": 7,
"firstName": "John",
"lastName": "Doe",
"skills": ["http://localhost:9001/skills/1", "http://localhost:9001/skills/2", "http://localhost:9001/skills/3"]
}
firstName илиlastName может быть изменено, но навыки остаются неизменными.
Если я выполняю PATCH
с той же полезной нагрузкой, навыки корректно изменяются.
Это должно работать с PUT
,не так ли?