Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
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 | + | = 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); | ||
− | + | .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 = | + | 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