Merge of lazily fetched fields, and merge of managed entities deviates from spec

Details

Description

Attached is a test case that illustrates this fail (You can place it into openjpa-persistence-jdbc/src/test/java/org.apache.openjpa.persistence.merge)

Problem 1: Section 3.2.7.1 (Merging Detached Entity State) of the specification says that "The persistence provider must not merge fields marked LAZY that have not been fetched: it must ignore such fields when merging.". The attached test case illustrates that OpenJPA 2.1.0 does not ignore fields marked LAZY that have not been fetched.
Problem 2: In the same section, the specification says "If X is a managed entity, it is ignored by the merge operation...". But OpenJPA 2.1.0 doesn't seem to ignore them.

Rick Curtis
added a comment - 19/Apr/11 21:38 Attaching a patch with the test case and code fix. I'm going to wait a couple days to commit this change till I can validate that I don't break some other tests.