You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by ss...@apache.org on 2007/02/21 05:06:46 UTC
svn commit: r509885 - in /incubator/openjpa/trunk/openjpa-jdbc/src/main:
java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
Author: ssegu
Date: Tue Feb 20 20:06:45 2007
New Revision: 509885
URL: http://svn.apache.org/viewvc?view=rev&rev=509885
Log:
OPENJPA-157. Fix to use the getIndependentTypeMappings to handle the case of field's declared type being abstract/unmapped
Modified:
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java?view=diff&rev=509885&r1=509884&r2=509885
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java Tue Feb 20 20:06:45 2007
@@ -31,6 +31,7 @@
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.meta.JavaTypes;
import org.apache.openjpa.util.MetaDataException;
+import org.apache.openjpa.util.UserException;
/**
* Helper methods for relation mappings.
@@ -74,11 +75,18 @@
public static Object toDataStoreValue(ValueMapping vm, Object val,
JDBCStore store) {
ClassMapping rel;
- if (val == null || val.getClass() == vm.getType())
+ if (val == null) {
+ ClassMapping[] clss = vm.getIndependentTypeMappings();
+ rel = (clss.length > 0) ? clss[0] : vm.getTypeMapping();
+ } else if (val.getClass() == vm.getType())
rel = vm.getTypeMapping(); // common case
else
rel = vm.getMappingRepository().getMapping(val.getClass(),
store.getContext().getClassLoader(), true);
+
+ if (!rel.isMapped())
+ throw new UserException(_loc.get("unmapped-datastore-value",
+ rel.getDescribedType()));
Column[] cols;
if (vm.getJoinDirection() == ValueMapping.JOIN_INVERSE)
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties?view=diff&rev=509885&r1=509884&r2=509885
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties Tue Feb 20 20:06:45 2007
@@ -131,3 +131,5 @@
bad-unmapped-rel: "{0}" cannot be mapped without stringifying the oid of \
the related object to a string column. The related type is unmapped and \
its "{1}" primary key field does not use a simple mapping.
+unmapped-datastore-value: Instances of type "{0}" are not valid query \
+ parameters because the type is not mapped.
\ No newline at end of file