Alan Roche created OPENJPA-2364:
-----------------------------------
Summary: Slices: Bulk JPQL Deletes/Updates ignoring Target plugins
and query hints.
Key: OPENJPA-2364
URL: https://issues.apache.org/jira/browse/OPENJPA-2364
Project: OpenJPA
Issue Type: Bug
Components: slice
Affects Versions: 2.2.1
Reporter: Alan Roche
Priority: Critical
I think there is a bug in OpenJPA Slices for Bulk Update Queries (At least for
Bulk Delete Statements).
So, if doing a bulk JPQL delete (E.G. "delete from Entity e where e.id in
:ids"), - all slices are hit with the query regardless of Policy plugins and
Query hints set to target just one slice.
I have implemented DistributionPolicy, FinderTargetPolicy and QueryTargetPolicy
as well as setting the "openjpa.hint.slice.Target" hint on the query and
EntityManager.
All slices are hit regardless of the above when we need to just target 1 Slice.
This causes big problems for us, as some tables do not exist in all slices and
queries fail.
Reproducing this is easy:
1/ Set up 2 slices
2/ Create table "Person" in slice A but NOT in slice B
3/ Register simple DistributionPolicy, FinderTargetPolicy and
QueryTargetPolicy plugins with OpenJPA Slices, - all hard-coded to only return
slice A.
4/ Execute JPQL delete "Delete from Person p where p.id = :id" with query hint
to slice A
5/ See that the delete update query is executed against all slices not just
slice A as required by target plugins and query hint
6/ Query fails against slice B because table does not exist in slice B.
We have set query hints etc. - but returning slice A in QueryTargetPolicy
should be enough
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira