[
https://issues.apache.org/jira/browse/OPENJPA-1873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mark Struberg updated OPENJPA-1873:
-----------------------------------
Attachment: OPENJPA-1873-fix3.patch
Hi!
I've now updated my patch to apply cleanly to the latest trunk!
This is tested in 2 big real world projects and works fine now since a year.
This is really an important issue, because currently the POST_LOAD lifecycle
listeners are really broken. They e.g. currently also being called for parts
which are lazily loaded - and in this case the lifecycle listener will get
completely wrong data handed over!
My patch is non-invasive because the 'fixed' handling will only be used if
POST_LOAD_ON_MERGE gets enabled in persistence.xml.
If noone objects, I'll go on and commit the patch tomorrow.
> EntityManager#merge sometimes passes wrong entity values to @PostLoad
> EntityListeners
> --------------------------------------------------------------------------------------
>
> Key: OPENJPA-1873
> URL: https://issues.apache.org/jira/browse/OPENJPA-1873
> Project: OpenJPA
> Issue Type: Bug
> Components: kernel
> Affects Versions: 2.0.0, 2.0.1, 2.0.2
> Reporter: Mark Struberg
> Assignee: Rick Curtis
> Attachments: OPENJPA-1873-fix1.patch, OPENJPA-1873-fix2.patch,
> OPENJPA-1873-fix3.patch, OPENJPA-1873-unittest.patch,
> openjpa-1873-hack-1.patch, postloadtest.zip
>
>
> I've tested this with the latest from branches/2.0.x.
> My entity has an @EntityListeners which observes the @PostLoad lifecycle
> event. This listener stores the 'old' values from the database for later use
> (see http://struberg.wordpress.com/2010/07/31/howto-changelog-with-jpa/ for
> the intention behind). All works well if the table has only a few rows. But
> if you add more rows, OpenJPA tries to optimize the access and only loads the
> @Version field + the dirty fields. In this case the merging seems to be
> wrong, because I get the NEW values from the dirty fields instead of the
> original values from the database passed to my @PostLoad method.
> Did cost me a few grey hairs to track down the differences between the
> working and the broken scenarios here ;) But finally I was able to creat a
> unit test showing the problem
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira