cvs diff jakarta-ojb\src\java\org\apache\ojb\broker\singlevm\PersistenceBrokerImpl.java (in directory C:\Projects\ojb\)
Index: jakarta-ojb/src/java/org/apache/ojb/broker/singlevm/PersistenceBrokerImpl.java
===================================================================
RCS file: /home/cvspublic/jakarta-ojb/src/java/org/apache/ojb/broker/singlevm/PersistenceBrokerImpl.java,v
retrieving revision 1.93
diff -r1.93 PersistenceBrokerImpl.java
632a633,671
>     /**
>      * Store all object references that <b>obj</b> points to.
>      * All objects which we have a FK pointing to (Via ReferenceDescriptors) will be stored if auto-update is true <b>AND</b>
>      * the member field containing the object reference is NOT null.
>      *
>      * @param obj Object which we will store references for
>      * @param vecRds - Vector with all ObjectReferenceDescriptors that should be stored
>      */
>     private void storePKReferences(Object obj, Vector vecRds, Map markedForStore)
>     {
>         // get all members of obj that are references and store them
>         Iterator i = vecRds.iterator();
>         while (i.hasNext())
>         {
>             ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
>             
>             boolean isPK = false;
>             
>             ClassDescriptor cld = descriptorRepository.getDescriptorFor(obj.getClass());
>             FieldDescriptor f[] = rds.getForeignKeyFieldDescriptors(cld);
>             if (f != null)
>             {
>                 for (int j = 0; j < f.length && !isPK; j++)
>                 {
>                     isPK = f[j].isPrimaryKey();
>                 }
>             }
>             
>             if (isPK) {
>                 Object ref = rds.getPersistentField().get(obj);
>                 if (rds.getCascadeStore())
>                 {
>                     store(ref, markedForStore);
>                 }
>             }
>         }
>     }
> 
> 
1899a1939,1958
>             
>             if (insert) {
>                 assignPKReferenceFKs(obj, cld.getObjectReferenceDescriptors());
>                 
>                 storePKReferences(obj, cld.getObjectReferenceDescriptors(), markedForStore);
>                 
>                 dbAccess.executeInsert(cld, obj);
>                  // Let SequenceManager update id if necessary, should only happen after an insert
>                 try
>                 {
>                     sequenceManager.afterStore(dbAccess, cld, obj);
>                 }
>                 catch (SequenceManagerException e)
>                 {
>                     logger.error("SQLException during SequenceManager.afterStore (for a " +
>                             cld.getClassOfObject().getName() + "): " + e.getMessage(), e);
>                     throw new PersistenceBrokerException(e);
>                 }    
>             }
>             
1929,1948c1988,2007
<             // 3. store primitive typed attributes (Or is THIS step 3 ?)
<             // if obj not present in db use INSERT
<             if (insert)
<             {
<                 dbAccess.executeInsert(cld, obj);
<                  // Let SequenceManager update id if necessary, should only happen after an insert
<                 try
<                 {
<                     sequenceManager.afterStore(dbAccess, cld, obj);
<                 }
<                 catch (SequenceManagerException e)
<                 {
<                     logger.error("SQLException during SequenceManager.afterStore (for a " +
<                             cld.getClassOfObject().getName() + "): " + e.getMessage(), e);
<                     throw new PersistenceBrokerException(e);
<                 }
<             }
<             // else use UPDATE
<             else
<             {
---
> //            // 3. store primitive typed attributes (Or is THIS step 3 ?)
> //            // if obj not present in db use INSERT
> //            if (insert)
> //            {
> //                dbAccess.executeInsert(cld, obj);
> //                 // Let SequenceManager update id if necessary, should only happen after an insert
> //                try
> //                {
> //                    sequenceManager.afterStore(dbAccess, cld, obj);
> //                }
> //                catch (SequenceManagerException e)
> //                {
> //                    logger.error("SQLException during SequenceManager.afterStore (for a " +
> //                            cld.getClassOfObject().getName() + "): " + e.getMessage(), e);
> //                    throw new PersistenceBrokerException(e);
> //                }
> //            }
> //            // else use UPDATE
> //            else
> //            {
1950c2009
<             }
---
> //            }
2006a2066,2097
>         }
>     }
> 
>     /**
>      *  assigns all foreign key attributes of the Object obj.
>      *  used during store(obj, boolean);
>      */
>     private void assignPKReferenceFKs(Object obj, Vector vecRds) throws PersistenceBrokerException
>     {
>         // get all members of obj that are references and assign FKs
>         Iterator i = vecRds.iterator();
>         while (i.hasNext())
>         {
>             ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
>             
>             
>             boolean isPK = false;
>             
>             ClassDescriptor cld = descriptorRepository.getDescriptorFor(obj.getClass());
>             FieldDescriptor f[] = rds.getForeignKeyFieldDescriptors(cld);
>             if (f != null)
>             {
>                 for (int j = 0; j < f.length && !isPK; j++)
>                 {
>                     isPK = f[j].isPrimaryKey();
>                 }
>             }
>             
>             if (isPK) {
>                 Object ref = rds.getPersistentField().get(obj);
>                 assertFkAssignment(obj, ref, rds);
>             }
