不使用jpql请求删除

问题描述 投票:1回答:1

该方法应按其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;
java hibernate jpql
1个回答
0
投票

您只需要写

query.executeUpdate(); 

之后

query.setParameter("id", id);
© www.soinside.com 2019 - 2024. All rights reserved.