mam jeden do wielu relacji między Team oraz Player, jestem w stanie stworzyć zespół z następującym JSONdane Wiosna odpocząć jeden do wielu usuwania obiektów podrzędnych
{
"id": 1,
"name": "MyTeam5",
"players": [
{
"name": "player5"
},
{
"name":"player10"
}
]
}
Jednak gdy próbuję usunąć obiekt dziecko poprzez usunięcie go z listy z poniższej JSON
{
"id": 1,
"name": "MyTeam5",
"players": [
{
"id": 2
"name": "player5"
}
]
}
pojawia się błąd mówiący
"A collection with cascade=\"all-delete-orphan\" was no longer referenced by the owning entity instance: org.a.c.domain.user.Team.players"
Oto mój kod zespołu i gracza:
@Data
@Entity
public class Team {
@Id
@GeneratedValue
private Integer id;
private String name;
@JsonManagedReference
@OneToMany(mappedBy="team", cascade= CascadeType.ALL, orphanRemoval=true)
List<Player> players = new ArrayList<Player>();
}
@Data
@Entity
public class Player {
@Id
@GeneratedValue
private Integer id;
private String name;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
}
Co robię źle? Jackson jest w stanie idealnie odwzorować jeden do wielu relacji, kiedy tworzę nowy zespół z grupą graczy, ale kiedy aktualizuję/usuwam graczy z Team json, to kończy się to z tym samym błędem. Czy jest możliwe, że kolekcja zostanie odtworzona, dlatego hibernacja rzuca błąd, jeśli tak, to jak mam to naprawić? Proszę pomóc
Gdzie ten kod się znajduje? To pytanie jest charakterystyczne dla spoczynkowych danych wiosennych, czy jest jakiś sposób na spenetrowanie danych, aby poradzić sobie z tą sytuacją? – Jay
Ten kod byłby ustawieniem wewnątrz jednostki jpa. Nie znam żadnego specyficznego dla tego sposobu spoczynku wiosennych danych. –
Ma sens, dzięki. – Jay