You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2008/06/12 01:29:12 UTC
svn commit: r666898 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
openjpa-kernel/src/main/java/org/ap...
Author: pcl
Date: Wed Jun 11 16:29:11 2008
New Revision: 666898
URL: http://svn.apache.org/viewvc?rev=666898&view=rev
Log:
OPENJPA-579, OPENJPA-585, OPENJPA-587, OPENJPA-588. Merge from ../active. svn merge -c 652987 ../active
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java?rev=666898&r1=666897&r2=666898&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java Wed Jun 11 16:29:11 2008
@@ -187,7 +187,8 @@
public int select(Select sel, OpenJPAStateManager sm, JDBCStore store,
JDBCFetchConfiguration fetch, int eagerMode) {
- if (sel.isDistinct())
+ if (sel.isDistinct() ||
+ eagerMode == JDBCFetchConfiguration.EAGER_NONE)
return -1;
sel.select(field.getColumns()[0], field.join(sel));
return 1;
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java?rev=666898&r1=666897&r2=666898&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java Wed Jun 11 16:29:11 2008
@@ -82,6 +82,7 @@
supportsLockingWithDistinctClause = false;
supportsNullTableForGetColumns = false;
+ requiresAliasForSubselect = true;
requiresAutoCommitForMetaData = true;
maxTableNameLength = 30;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java?rev=666898&r1=666897&r2=666898&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java Wed Jun 11 16:29:11 2008
@@ -86,7 +86,8 @@
PersistenceCapable newInstance;
if (!manager.getCopyNew())
newInstance = pc;
- else if (appId == null) // datastore identity
+ else if (appId == null)
+ // datastore identity or application identity with generated keys
newInstance = pc.pcNewInstance(null, false);
else // application identity: use existing fields
newInstance = pc.pcNewInstance(null, appId, false);
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java?rev=666898&r1=666897&r2=666898&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/VersionAttachStrategy.java Wed Jun 11 16:29:11 2008
@@ -29,6 +29,7 @@
import org.apache.openjpa.meta.FieldMetaData;
import org.apache.openjpa.meta.JavaTypes;
import org.apache.openjpa.meta.ValueMetaData;
+import org.apache.openjpa.meta.ValueStrategies;
import org.apache.openjpa.util.ApplicationIds;
import org.apache.openjpa.util.ObjectNotFoundException;
import org.apache.openjpa.util.OptimisticException;
@@ -92,8 +93,11 @@
sm = (StateManagerImpl) broker.embed(into, null, owner, ownerMeta);
into = sm.getPersistenceCapable();
} else if (isNew) {
- sm = persist(manager, pc, meta, ApplicationIds.create(pc, meta),
- explicit);
+ Object oid = null;
+ if (!isPrimaryKeysGenerated(meta))
+ oid = ApplicationIds.create(pc, meta);
+
+ sm = persist(manager, pc, meta, oid, explicit);
into = sm.getPersistenceCapable();
} else if (!embedded && into == null) {
Object id = getDetachedObjectId(manager, toAttach);
@@ -373,4 +377,13 @@
return null;
}
}
+
+ private boolean isPrimaryKeysGenerated(ClassMetaData meta) {
+ FieldMetaData[] pks = meta.getPrimaryKeyFields();
+ for (int i = 0; i < pks.length; i++) {
+ if (pks[i].getValueStrategy() != ValueStrategies.NONE)
+ return true;
+ }
+ return false;
+ }
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=666898&r1=666897&r2=666898&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Wed Jun 11 16:29:11 2008
@@ -966,8 +966,7 @@
fmd = (FieldMetaData) itr.next();
if (fmd.getManagement() != FieldMetaData.MANAGE_NONE) {
fmd.setDeclaredIndex(fields.size());
- if (fmd.getIndex() == -1)
- fmd.setIndex(fmd.getDeclaredIndex());
+ fmd.setIndex(fmd.getDeclaredIndex());
fields.add(fmd);
}
}