10.10. Delete By Query
Prev | Chapter 10. JPA Query | Next

## 10.10. Delete By Query

Queries are useful not only for finding objects, but for efficiently deleting them as well. For example, you might delete all records created before a certain date. Rather than bring these objects into memory and delete them individually, JPA allows you to perform a single bulk delete based on JPQL criteria.

Delete by query uses the same JPQL syntax as normal queries, with one exception: begin your query string with the `delete` keyword instead of the `select` keyword. To then execute the delete, you call the following `Query` method:

    public int executeUpdate ();

This method returns the number of objects deleted. The following example deletes all subscriptions whose expiration date has passed.

Example 10.1. Delete by Query

    Query q = em.createQuery ("delete s from Subscription s where s.subscriptionDate < :today");
    q.setParameter ("today", new Date ());
    int deleted = q.executeUpdate ();

Prev | Up | Next
10.9. Named Queries | Home | 10.11. Update By Query