该方法应该根据一个人的id删除他身上的所有广告。它不会给出错误,我不知道如何进行调试来检查错误。
public void deleteAllAdByPersonById(int id) {
EntityManager em = FACTORY.createEntityManager();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
Query query = em.createQuery("DELETE FROM Ad a WHERE a.person.id = :id");
query.setParameter("id", id);
transaction.commit();
em.close();
}
个人
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "person_id")
private int id;
@NotEmpty
@NotNull(message = "Name cannot be null")
private String name;
@OneToMany(mappedBy = "person", fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
private Set<Ad> ads = new HashSet<>();
广告
@Entity
public class Ad {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ad_id")
private int id;
...
@ManyToOne
@JoinColumn(name = "person_fk_id")
private Person person;
您只需要编写
query.executeUpdate();
之后
query.setParameter("id", id);