Modified: openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties (original) +++ openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties Fri Mar 13 23:20:45 2009 @@ -75,3 +75,5 @@ not-type-literal: The specified node ("{0}") is not a valid entity type literal. bad-qualified-identifier: The identifier "{0}" in "{1}" operator is not \ referring to an association field of type java.util.Map. +bad-qualified-path: Attemp to navigate a basic type of Key("{0}"). + \ No newline at end of file
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java Fri Mar 13 23:20:45 2009 @@ -33,6 +33,7 @@ import org.apache.openjpa.lib.jdbc.AbstractJDBCListener; import org.apache.openjpa.lib.jdbc.JDBCEvent; import org.apache.openjpa.lib.jdbc.JDBCListener; +import org.apache.openjpa.persistence.ArgumentException; import org.apache.openjpa.persistence.test.SingleEMFTestCase; @@ -64,9 +65,22 @@ public void testQueryQualifiedId() throws Exception { EntityManager em = emf.createEntityManager(); - String query = "select KEY(e) from PhoneNumber p, " + + // test navigation thru VALUE + String query = "select VALUE(e).empId from PhoneNumber p, " + " in (p.emps) e order by e.empId"; List rs = em.createQuery(query).getResultList(); + + // test navigation thru KEY + query = "select KEY(e), KEY(e).name from PhoneNumber p, " + + " in (p.emps) e order by e.empId"; + rs = em.createQuery(query).getResultList(); + Division d0 = (Division) ((Object[]) rs.get(0))[0]; + String name = (String)((Object[]) rs.get(0))[1]; + assertEquals(d0.getName(), name); + + query = "select KEY(e) from PhoneNumber p, " + + " in (p.emps) e order by e.empId"; + rs = em.createQuery(query).getResultList(); Division d = (Division) rs.get(0); String query2 = "select KEY(p) from Employee e, " + @@ -93,6 +107,23 @@ List rs5 = em.createQuery(query5).getResultList(); assertEquals(Division.class, rs5.get(0)); + // expects parser error: + // JPA2 has no support for predicate comparison using + // Key(e) or Value(e) + String query1 = "select KEY(p) from Employee e, " + + " in (e.phones) p where KEY(p) = ?1"; + try { + List rs1 = em.createQuery(query1).setParameter(1, d2). + getResultList(); + } catch (Exception ex) { + assertException(ex, ArgumentException.class); + } + + // test VALUE(e) IS NULL predicate + query2 = "select KEY(p) from Employee e, " + + " in (e.phones) p WHERE VALUE(p) IS NULL"; + rs2 = em.createQuery(query2).getResultList(); + em.close(); } Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java Fri Mar 13 23:20:45 2009 @@ -90,6 +90,23 @@ assertTrue(d.equals(me.getKey())); + // test navigation thru KEY + em.clear(); + query = "select KEY(e), KEY(e).name from PhoneNumber p, " + + " in (p.emps) e order by e.empId"; + rs = em.createQuery(query).getResultList(); + Division d0 = (Division) ((Object[]) rs.get(0))[0]; + String name = (String)((Object[]) rs.get(0))[1]; + assertEquals(d0.getName(), name); + + em.clear(); + query2 = "select KEY(p), KEY(p).name from Employee e, " + + " in (e.phones) p"; + rs2 = em.createQuery(query2).getResultList(); + d2 = (Department) ((Object[]) rs2.get(0))[0]; + String dname = (String) ((Object[]) rs2.get(0))[1]; + assertEquals(d2.getName(), dname); + em.close(); } Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java Fri Mar 13 23:20:45 2009 @@ -34,6 +34,14 @@ this.bDay = bDay; } + public String getName() { + return name; + } + + public Date getBDay() { + return bDay; + } + public boolean equals(Object o) { if (this == o) return true; Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java Fri Mar 13 23:20:45 2009 @@ -33,6 +33,14 @@ this.phoneNum = phoneNum; } + public String getAreaCode() { + return areaCode; + } + + public String getPhoneNum() { + return phoneNum; + } + public boolean equals(Object o) { if (this == o) return true; Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java Fri Mar 13 23:20:45 2009 @@ -89,6 +89,23 @@ assertTrue(d.equals(me.getKey())); + // test navigation thru KEY + em.clear(); + query = "select KEY(e), KEY(e).name from PhoneNumber p, " + + " in (p.emps) e"; + rs = em.createQuery(query).getResultList(); + EmployeePK d0 = (EmployeePK) ((Object[]) rs.get(0))[0]; + String name = (String)((Object[]) rs.get(0))[1]; + assertEquals(d0.getName(), name); + + em.clear(); + query2 = "select KEY(p), KEY(p).phoneNum from Employee e, " + + " in (e.phones) p"; + rs2 = em.createQuery(query2).getResultList(); + k = (PhonePK) ((Object[]) rs2.get(0))[0]; + String phoneNum = (String) ((Object[]) rs2.get(0))[1]; + assertEquals(k.getPhoneNum(), phoneNum); + em.close(); } Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java Fri Mar 13 23:20:45 2009 @@ -84,6 +84,22 @@ assertTrue(d.equals(me.getKey())); + // test navigation thru KEY + em.clear(); + query = "select KEY(e), KEY(e).fName from PhoneNumber p, " + + " in (p.emps) e order by e.empId"; + rs = em.createQuery(query).getResultList(); + d = (FullName) ((Object[]) rs.get(0))[0]; + String fname = (String) ((Object[]) rs.get(0))[1]; + assertEquals(d.getFName(), fname); + + em.clear(); + query2 = "select KEY(p), KEY(p).name from Employee e, " + + " in (e.phones) p"; + rs2 = em.createQuery(query2).getResultList(); + d2 = (Department) ((Object[]) rs2.get(0))[0]; + String dname = (String) ((Object[]) rs2.get(0))[1]; + em.close(); } Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java Fri Mar 13 23:20:45 2009 @@ -34,6 +34,14 @@ this.bDay = bDay; } + public String getName() { + return name; + } + + public Date getBDay() { + return bDay; + } + public boolean equals(Object o) { if (this == o) return true; Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java?rev=753473&r1=753472&r2=753473&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java Fri Mar 13 23:20:45 2009 @@ -61,10 +61,12 @@ public void testQualifiedId() throws Exception { EntityManager em = emf.createEntityManager(); - String query = "select KEY(e) from Department d, " + + String query = "select KEY(e), KEY(e).name from Department d, " + " in (d.empMap) e where d.deptId = 1"; List rs = em.createQuery(query).getResultList(); - EmployeePK d = (EmployeePK) rs.get(0); + EmployeePK d = (EmployeePK) ((Object[]) rs.get(0))[0]; + String name = (String) ((Object[]) rs.get(0))[1]; + assertEquals(d.getName(), name); em.clear(); String query4 = "select ENTRY(e) from Department d, " +
