Author: faywang
Date: Thu Apr 2 15:40:13 2009
New Revision: 761328
URL: http://svn.apache.org/viewvc?rev=761328&view=rev
Log:
OPENJPA-218: fix merge problem with derived identity using IdClass. The
corresponding test case is checked in using JIRA-1004.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java?rev=761328&r1=761327&r2=761328&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
Thu Apr 2 15:40:13 2009
@@ -2270,8 +2270,13 @@
type = fmds[i].getObjectIdFieldType();
if (!fieldManager
&& fmds[i].getDeclaredTypeCode() == JavaTypes.PC) {
- // sm.getPCPrimaryKey(oid, i + pcInheritedFieldCount);
+ // if (sm == null) return;
loadManagedInstance(code, false);
+ code.getfield().setField(SM, SMTYPE);
+ JumpInstruction ifins = code.ifnonnull();
+ code.vreturn();
+ // sm.getPCPrimaryKey(oid, i + pcInheritedFieldCount);
+ ifins.setTarget(loadManagedInstance(code, false));
code.dup(); // leave orig on stack to set value into
code.getfield().setField(SM, SMTYPE);
code.aload().setLocal(id);