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().