作者实体具有广告对象的集合(一对多双向关系)和电话的集合(一对多单向关系)。
作者
public class Author {
@Id
@GeneratedValue
private int id;
private String nameOfAuthor;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(name = "author_phone",
joinColumns = @JoinColumn(name = "author_fk_id"),
inverseJoinColumns = @JoinColumn(name = "phone_fk_id"))
@Fetch(FetchMode.SELECT)
private List<Phone> phones = new LinkedList<>();
@OneToMany(mappedBy = "author", cascade = CascadeType.ALL,
orphanRemoval = true, fetch = FetchType.EAGER)
private List<Advertisement> advertisements = new ArrayList<>();
}
电话
public class Phone {
@Id
@GeneratedValue
private int id;
@Column(name = "phone_number")
private String phoneNumber;
}
广告
public class Advertisement {
@Id
@GeneratedValue
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "advert_author_id_fk")
@Fetch(FetchMode.JOIN)
private Author author;
}
保存作者的方法:
public void add(Author author) {
em.persist(author);
}
更新作者的方法:
@PersistenceContext
private EntityManager em;
public void update(Author author) {
Author merge = em.merge(author);
em.persist(merge);
}
当我发送数据库作者中存在的updatig的json时:
{
"id": 2,
"nameOfAuthor": "Segey",
"advertisements": [],
"phones":[]
}
Json用于保存作者:
{
"nameOfAuthor": "Segey",
"advertisements":[],
"phones":[
{
"phoneNumber": "33333"
}
]
}
我不知道为什么JPA删除所有phones
,而不删除advertisements
。