【发布时间】:2015-07-06 05:41:12
【问题描述】:
我在团队和玩家之间有一对多的关系,我可以使用以下 JSON 创建一个团队
{
"id": 1,
"name": "MyTeam5",
"players": [
{
"name": "player5"
},
{
"name":"player10"
}
]
}
但是,当我尝试通过使用以下 JSON 将其从列表中删除来删除子对象时
{
"id": 1,
"name": "MyTeam5",
"players": [
{
"id": 2
"name": "player5"
}
]
}
我收到一个错误提示
"A collection with cascade=\"all-delete-orphan\" was no longer referenced by the owning entity instance: org.a.c.domain.user.Team.players"
这是我的团队和玩家实体代码 -
@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;
}
我做错了什么?当我创建一个包含一群球员的新团队时,杰克逊能够完美地映射一对多关系,但是当我从 Team json 更新/删除球员时,它会失败并出现同样的错误。是否有可能重新创建集合,这就是休眠引发错误的原因,如果是这样,我应该如何修复它?请帮忙
【问题讨论】:
标签: json spring hibernate spring-data-jpa spring-data-rest