Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0
-
None
-
None
Description
There is an entity Node2 which is using an identity class.
It is introduced in an unit test attached to related issue OPENJPA-2144.
I have made two sequential queries to Node2 at the same transaction, but different query objects in order to use prepared SQL query Cache.
JPQL: SELECT p FROM Node2 p WHERE p.parent = :parent
Not cached query works fine and returns not empty list:
302884 test TRACE [main] openjpa.Runtime - Query "SELECT p FROM Node2 p WHERE p.parent = :parent" is cached."
302884 test TRACE [main] openjpa.Query - Executing query: [SELECT p FROM Node2 p WHERE p.parent = :parent] with parameters:
302962 test TRACE [main] openjpa.jdbc.SQL - <t 5142872, conn 30621423> executing prepstmnt 21961831 SELECT t0.district, t0.id, t0.region, t0.version, t0.data, t0.PARENT_ID FROM NODE2 t0 WHERE (t0.PARENT_ID = ? AND t0.region = ? AND t0.district = ?) [params=(long) 1351, (int) 1, (int) 2]
Sequential cached query returns empty list:
346242 test TRACE [main] openjpa.Query - Executing query: [SELECT p FROM Node2 p WHERE p.parent = :parent] with parameters:
{0=1, 1=1, 2=2}346242 test TRACE [main] openjpa.jdbc.SQL - <t 5142872, conn 30621423> executing prepstmnt 13122813 SELECT t0.district, t0.id, t0.region, t0.version, t0.data, t0.PARENT_ID FROM NODE2 t0 WHERE (t0.PARENT_ID = ? AND t0.region = ? AND t0.district = ?) [params=(int) 1, (int) 1, (int) 2]
You can see that wrong paraments were passed into the cached generated raw SQL in the second query!
That is the problem, we have wrong query result.
Attachments
Issue Links
- relates to
-
OPENJPA-2144 Using recursive relationships along with Identity Class leads to NullPointerException
- Open