Aare Aasmäe
Aare Aasmäe

Reputation: 21

JPA Delete query not working

Well, I do not understand why me code does not work. Could Someone please take a look. It does not provide any error messages but the Customer will not be deleted. Other methods are working well (getCustomerbyId, getAllCustomers and so) Thanks

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);
        }
    }

Upvotes: 2

Views: 17651

Answers (3)

Chris
Chris

Reputation: 21145

You need to execute queries to have SQL issues to the database; in this case you will want to use executeUpdate() and get the modified row count to verify something was deleted or not.

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();

Upvotes: 4

Safa KH
Safa KH

Reputation: 31

Use jpa APis find(Customer.class) to find the customer object then use romove(object)

Upvotes: 0

Peter Gelderbloem
Peter Gelderbloem

Reputation: 512

You are creating a query but not executing it. You should add

query.executeUpdate();

before committing

Upvotes: 2

Related Questions