You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2009/04/02 17:40:13 UTC

svn commit: r761328 - /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java

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);