You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/06/26 23:29:05 UTC
svn commit: r550958 -
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
Author: aadamchik
Date: Tue Jun 26 14:29:05 2007
New Revision: 550958
URL: http://svn.apache.org/viewvc?view=rev&rev=550958
Log:
CAY-811 Meaningful identity columns: user provided PK values are ignored
(partial fix)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java?view=diff&rev=550958&r1=550957&r2=550958
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java Tue Jun 26 14:29:05 2007
@@ -19,7 +19,6 @@
package org.apache.cayenne.access;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -110,12 +109,8 @@
ObjEntity objEntity = descriptor.getEntity();
DbEntity dbEntity = objEntity.getDbEntity();
DataNode node = parent.getDomain().lookupDataNode(dbEntity.getDataMap());
- Collection generatedPks = getAutogeneratedKeys(node, dbEntity);
-
- if (generatedPks.isEmpty()) {
- return;
- }
-
+ boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
+
PkGenerator pkGenerator = node.getAdapter().getPkGenerator();
Iterator i = dataObjects.iterator();
@@ -131,7 +126,7 @@
Map idMap = id.getReplacementIdMap();
boolean autoPkDone = false;
- Iterator it = generatedPks.iterator();
+ Iterator it = dbEntity.getPrimaryKey().iterator();
while (it.hasNext()) {
DbAttribute dbAttr = (DbAttribute) it.next();
String dbAttrName = dbAttr.getName();
@@ -156,7 +151,17 @@
}
}
}
+
+ // skip db-generated
+ if (supportsGeneratedKeys && dbAttr.isGenerated()) {
+ continue;
+ }
+ // skip propagated
+ if (isPropagated(dbAttr)) {
+ continue;
+ }
+
// only a single key can be generated from DB... if this is done already
// in this loop, we must bail out.
if (autoPkDone) {
@@ -176,32 +181,6 @@
}
}
}
- }
-
- /**
- * Returns a collection of DbAttributes that should be generated by Cayenne.
- */
- // TODO, andrus 4/12/2006 - move to DbEntity in 2.0+
- Collection getAutogeneratedKeys(DataNode node, DbEntity entity) {
- boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
- Iterator it = entity.getPrimaryKey().iterator();
-
- Collection generated = new ArrayList(1);
- while (it.hasNext()) {
- DbAttribute next = (DbAttribute) it.next();
-
- if (supportsGeneratedKeys && next.isGenerated()) {
- continue;
- }
-
- if (isPropagated(next)) {
- continue;
- }
-
- generated.add(next);
- }
-
- return generated;
}
// TODO, andrus 4/12/2006 - move to DbAttribute in 2.0+