首页 > 解决方案 > 不使用 jpql 请求删除

问题描述

该方法应该通过他的 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;

标签: javahibernatejpql

解决方案


你只需要写

query.executeUpdate(); 

query.setParameter("id", id);

推荐阅读