Author: ppoddar
Date: Mon Aug 25 16:28:31 2008
New Revision: 688919

URL: http://svn.apache.org/viewvc?rev=688919&view=rev
Log:
OPENJPA-705: Secondary table for Embdded field is to be looked up in the 
owner's secondary table.

Modified:
    
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMappingInfo.java

Modified: 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMappingInfo.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMappingInfo.java?rev=688919&r1=688918&r2=688919&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMappingInfo.java
 (original)
+++ 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/FieldMappingInfo.java
 Mon Aug 25 16:28:31 2008
@@ -153,11 +153,20 @@
     public ForeignKey getJoin(final FieldMapping field, Table table,
         boolean adapt) {
         // if we have no join columns defined, check class-level join
+       // if the given field is embedded then consider primary table of owner
         List cols = getColumns();
-        if (cols.isEmpty())
-            cols = field.getDefiningMapping().getMappingInfo().
+        if (cols.isEmpty()) {
+               ClassMapping mapping;
+               if (field.isEmbedded() && 
+                       field.getDeclaringMapping().getEmbeddingMapping() != 
null) {
+                       mapping = 
field.getDeclaringMapping().getEmbeddingMapping()
+                               .getFieldMapping().getDeclaringMapping();
+               } else {
+                       mapping = field.getDefiningMapping();
+               }
+            cols = mapping.getMappingInfo().
                 getSecondaryTableJoinColumns(_tableName);
-
+        }
         ForeignKeyDefaults def = new ForeignKeyDefaults() {
             public ForeignKey get(Table local, Table foreign, boolean inverse) 
{
                 return field.getMappingRepository().getMappingDefaults().


Reply via email to