JPA删除查询不起作用

时间:2016-10-15 18:06:20

标签: java sql jpa entitymanager

好吧,我不明白为什么我的代码不起作用。有人可以看看。它不提供任何错误消息,但不会删除客户。其他方法运行良好(getCustomerbyId,getAllCustomers等) 感谢

public void deleteCustomerById(long id) {
        EntityManager em = null;
        try {
            em = JpaUtil.getFactory().createEntityManager();
            em.getTransaction().begin();
            Query query = em.createQuery("Delete  from Customer c where c.id = :id");
            query.setParameter("id", id);
            em.getTransaction().commit();
        } finally {
            JpaUtil.closeQuietly(em);
        }
    }

3 个答案:

答案 0 :(得分:2)

您需要执行查询才能将SQL问题发送到数据库;在这种情况下,您将需要使用executeUpdate()并获取修改后的行计数以验证是否删除了某些内容。

em.getTransaction().begin();
Query query = em.createQuery("Delete  from Customer c where c.id = :id");
query.setParameter("id", id);
int rows = query.executeUpdate();
em.getTransaction().commit();

答案 1 :(得分:2)

您正在创建查询但不执行查询。 你应该添加

query.executeUpdate();
提交前

答案 2 :(得分:0)

使用jpa APis find(Customer.class)查找客户对象然后使用romove(object)