You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by kw...@apache.org on 2008/09/08 23:32:18 UTC

svn commit: r693282 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/

Author: kwsutter
Date: Mon Sep  8 14:32:17 2008
New Revision: 693282

URL: http://svn.apache.org/viewvc?rev=693282&view=rev
Log:
OPENJPA-715.  Committing the testcase provided by Ekin Sokmen and the patch provided by Fay Wang.  Committing the change for both the 1.2.x service stream and 1.3.0 snapshot (trunk).

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java?rev=693282&r1=693281&r2=693282&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java Mon Sep  8 14:32:17 2008
@@ -356,7 +356,7 @@
     }
 
     /**
-     * Return the primary key value for the given class.
+     * Return the primary key value for the sequence table for the given class.
      */
     protected Object getPrimaryKey(ClassMapping mapping) {
         return Numbers.valueOf(0);

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java?rev=693282&r1=693281&r2=693282&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/SingleFieldManager.java Mon Sep  8 14:32:17 2008
@@ -755,8 +755,12 @@
                     .setFailedObject(obj);
         } else {
             sm = _broker.getStateManager(obj);
-            if (sm == null || !sm.isProvisional())
+            if (sm == null || !sm.isProvisional()) { 
                 sm = _broker.persist(obj, null, true, call);
+                // ensure generated IDs get assigned properly
+                if (!logical)
+                    ((StateManagerImpl)sm).assignObjectId(false, true);
+            }
         }
 
         if (sm != null) {

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?rev=693282&r1=693281&r2=693282&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java Mon Sep  8 14:32:17 2008
@@ -512,7 +512,7 @@
      * Ask store manager to assign our oid, optionally flushing and
      * optionally recaching on the new oid.
      */
-    private boolean assignObjectId(boolean flush, boolean preFlushing) {
+    boolean assignObjectId(boolean flush, boolean preFlushing) {
         if (_oid != null || isEmbedded() || !isPersistent())
             return true;