Jump to: navigation, search

Difference between revisions of "EclipseLink/Release/2.5/JPA21"

(New page: === EclipseLink JPA 2.1 === This page contains a summary of the major features supported in EclipseLink that implements the JPA 2.1 ([http://jcp.org/en/jsr/detail?id=338 JSR 338]) specifi...)
 
Line 8: Line 8:
 
addition of CriteriaUpdate/CriteriaDelete classes, support for bulkupdate/delete queries has now been added.
 
addition of CriteriaUpdate/CriteriaDelete classes, support for bulkupdate/delete queries has now been added.
  
The following example will update all the salaries of the Employees who make less than 10000$, and give them a raise.
+
= Update Example =
 +
The following example will update the salary and status, of all Employees who make less than 10000$, and give them a raise.
  
 
   CriteriaUpdate<Employee> q = cb.createCriteriaUpdate(Employee.class);
 
   CriteriaUpdate<Employee> q = cb.createCriteriaUpdate(Employee.class);
 
   Root<Employee> emp = q.from(Employee.class);
 
   Root<Employee> emp = q.from(Employee.class);
   q.set(emp.get(Employee_.salary), 10000)
+
   .set(e.get(Employee_.salary), cb.prod(e.get(Employee_.salary), 1.1f))
 +
  .set(e.get(Employee_.status), "full_time")
 
   .where(cb.lt(emp.get(Emploee_.salary), 10000));
 
   .where(cb.lt(emp.get(Emploee_.salary), 10000));
  
  
 
The following Java Persistence query language update statement is equivalent.
 
The following Java Persistence query language update statement is equivalent.
   UPDATE Employee e SET e.salary = 10000 WHERE e.salary < 10000
+
   UPDATE Employee e SET e.salary = e.salary * 1.1, e.status = "full_time" WHERE e.salary < 10000
 +
 
 +
 
 +
= Delete Example =
 +
 
 +
  CriteriaDelete<Customer> q = cb.createCriteriaDelete(Customer.class);
 +
  Root<Customer> c = q.from(Customer.class);
 +
  q.where(cb.equal(c.get(Customer_.status), "inactive"),
 +
  cb.isEmpty(c.get(Customer_.orders)));
 +
 
 +
 
 +
The following Java Persistence query language delete statement is equivalent.
 +
  DELETE FROM Customer c
 +
    WHERE c.status = 'inactive'
 +
    AND c.orders IS EMPTY

Revision as of 15:08, 2 May 2013

EclipseLink JPA 2.1

This page contains a summary of the major features supported in EclipseLink that implements the JPA 2.1 (JSR 338) specification requirements. The features and examples on this page do not represent a complete list. For more information, please see: the JSR 338 page.


Bulk Update

Until JPA 2.1, performing deletes or updates was not available using the Criteria API. Through the addition of CriteriaUpdate/CriteriaDelete classes, support for bulkupdate/delete queries has now been added.

Update Example

The following example will update the salary and status, of all Employees who make less than 10000$, and give them a raise.

  CriteriaUpdate<Employee> q = cb.createCriteriaUpdate(Employee.class);
  Root<Employee> emp = q.from(Employee.class);
  .set(e.get(Employee_.salary), cb.prod(e.get(Employee_.salary), 1.1f))
  .set(e.get(Employee_.status), "full_time")
  .where(cb.lt(emp.get(Emploee_.salary), 10000));


The following Java Persistence query language update statement is equivalent.

  UPDATE Employee e SET e.salary = e.salary * 1.1, e.status = "full_time" WHERE e.salary < 10000


Delete Example

  CriteriaDelete<Customer> q = cb.createCriteriaDelete(Customer.class);
  Root<Customer> c = q.from(Customer.class);
  q.where(cb.equal(c.get(Customer_.status), "inactive"),
  cb.isEmpty(c.get(Customer_.orders)));


The following Java Persistence query language delete statement is equivalent.

  DELETE FROM Customer c
    WHERE c.status = 'inactive'
    AND c.orders IS EMPTY