You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2009/04/11 18:47:16 UTC
svn commit: r764218 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex6/
openjpa-persistence-jdbc/src/test/java/org/apache...
Author: fancy
Date: Sat Apr 11 16:47:15 2009
New Revision: 764218
URL: http://svn.apache.org/viewvc?rev=764218&view=rev
Log:
OPENJPA-1021 allow MapKey on relation field
- add JPA2 Query support for MapKey on relation field
- remove @AllowFailure in test cases
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapInverseKeyFieldStrategy.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapTableFieldStrategy.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/Division.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapInverseKeyFieldStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapInverseKeyFieldStrategy.java?rev=764218&r1=764217&r2=764218&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapInverseKeyFieldStrategy.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapInverseKeyFieldStrategy.java Sat Apr 11 16:47:15 2009
@@ -139,6 +139,27 @@
return joins;
}
+ public Joins joinKeyRelation(Joins joins, boolean forceOuter,
+ boolean traverse) {
+ ValueMapping key = field.getKeyMapping();
+ if (key.isEmbedded())
+ return joins;
+
+ ClassMapping[] clss = key.getIndependentTypeMappings();
+ if (clss.length != 1) {
+ if (traverse)
+ throw RelationStrategies.unjoinable(key);
+ return joins;
+ }
+ if (forceOuter)
+ return joins.outerJoinRelation(field.getName(),
+ key.getForeignKey(clss[0]), clss[0], key.getSelectSubclasses(),
+ false, false);
+ return joins.joinRelation(field.getName(),
+ key.getForeignKey(clss[0]), clss[0], key.getSelectSubclasses(),
+ false, false);
+ }
+
public Joins joinValueRelation(Joins joins, ClassMapping val) {
return joinElementRelation(joins, val);
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapTableFieldStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapTableFieldStrategy.java?rev=764218&r1=764217&r2=764218&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapTableFieldStrategy.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationMapTableFieldStrategy.java Sat Apr 11 16:47:15 2009
@@ -139,6 +139,27 @@
return joins;
}
+ public Joins joinKeyRelation(Joins joins, boolean forceOuter,
+ boolean traverse) {
+ ValueMapping key = field.getKeyMapping();
+ if (key.isEmbedded())
+ return joins;
+
+ ClassMapping[] clss = key.getIndependentTypeMappings();
+ if (clss.length != 1) {
+ if (traverse)
+ throw RelationStrategies.unjoinable(key);
+ return joins;
+ }
+ if (forceOuter)
+ return joins.outerJoinRelation(field.getName(),
+ key.getForeignKey(clss[0]), clss[0], key.getSelectSubclasses(),
+ false, false);
+ return joins.joinRelation(field.getName(),
+ key.getForeignKey(clss[0]), clss[0], key.getSelectSubclasses(),
+ false, false);
+ }
+
public Joins joinValueRelation(Joins joins, ClassMapping val) {
return joinElementRelation(joins, val);
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java?rev=764218&r1=764217&r2=764218&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java Sat Apr 11 16:47:15 2009
@@ -61,8 +61,7 @@
public void testQueryInMemoryQualifiedId() throws Exception {
queryQualifiedId(true);
}
-
- @AllowFailure
+
public void testQueryQualifiedId() throws Exception {
queryQualifiedId(false);
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/Division.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/Division.java?rev=764218&r1=764217&r2=764218&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/Division.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/Division.java Sat Apr 11 16:47:15 2009
@@ -20,6 +20,7 @@
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@@ -29,6 +30,9 @@
int id;
String name;
+
+ @OneToOne(mappedBy="div")
+ VicePresident vp;
public int getId() {
return id;
@@ -46,6 +50,14 @@
this.name = name;
}
+ public VicePresident getVp() {
+ return vp;
+ }
+
+ public void setVp(VicePresident vp) {
+ this.vp = vp;
+ }
+
public boolean equals(Object o) {
Division d = (Division) o;
if (d.name.equals(name) &&
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java?rev=764218&r1=764217&r2=764218&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java Sat Apr 11 16:47:15 2009
@@ -64,7 +64,6 @@
queryQualifiedId(true);
}
- @AllowFailure
public void testQueryQualifiedId() throws Exception {
queryQualifiedId(false);
}