Seems there's a regression in custom id classes and bidirectional many- to-one relationships. Haven't tried many-to-many but I suspect it exists there as well.

It seems that the order of parameters filled into the SQLBuffer are getting mixed. When the owning side's collection is loaded the sql is correctly generated with the foreign keys in the where clause lining up to the sql perfectly, but the there seems to be a second pass where the parameter values are collected in what *appears* to be alphabetical order. When setParameters(..) is called the orders of the params are not guaranteed to match and can result in an invalid select statement.

More details here:  https://issues.apache.org/jira/browse/OPENJPA-872

Just a note, I've taken the liberty to mark it as "blocker" as this regression is causing a small set of TCK failures which is affecting the pending Geronimo 2.1.4 and 2.2 releases. The area isn't actually the JPA side of the TCK but rather the EJB/CMP20 side (i.e. the OpenEJB CMP/JPA bridge).

I've included a small test case which replicates the issue. It uses a container managed entity manager, but could easily be reworked for standalone jpa -- was just easier to get something running this way.

-David



Reply via email to