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/07 19:51:37 UTC

svn commit: r762871 - in /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query: Order.java TestSubquery.java

Author: fancy
Date: Tue Apr  7 17:51:36 2009
New Revision: 762871

URL: http://svn.apache.org/viewvc?rev=762871&view=rev
Log:
OPENJPA-1024 JPA2 support scalar expressions in subquery
add test strings

Modified:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Order.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Order.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Order.java?rev=762871&r1=762870&r2=762871&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Order.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Order.java Tue Apr  7 17:51:36 2009
@@ -20,6 +20,7 @@
 
 import javax.persistence.*;
 
+import java.sql.Timestamp;
 import java.util.Collection;
 import java.util.ArrayList;
 
@@ -41,7 +42,9 @@
 	@Version
 	long version;
 	
-	public Order(){}
+    Timestamp orderTs;
+
+    public Order(){}
 	
 	public Order(  double amt, boolean delivered, Customer c){
 		amount=amt;
@@ -84,4 +87,12 @@
 	public void setLineitems(Collection<OrderItem> lineitems) {
 		this.lineitems = lineitems;
 	}
+    
+    public Timestamp getOrderTs() {
+        return orderTs;
+    }
+    
+    public void setOrderTs(Timestamp orderTs) {
+        this.orderTs = orderTs;
+    }
 }

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java?rev=762871&r1=762870&r2=762871&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java Tue Apr  7 17:51:36 2009
@@ -88,6 +88,34 @@
     //   + " (select o2 from c.orders o2 where o2 = o",
     };
 
+    static String[]  querys_jpa20 = new String[] {        
+        "select o.oid from Order o where o.delivered =" +
+            " (select " +
+            "   CASE WHEN o2.amount > 10 THEN true" + 
+            "     WHEN o2.amount = 10 THEN false " +
+            "     ELSE false " +
+            "     END " +
+            " from Order o2" +
+            " where o.customer.cid.id = o2.customer.cid.id)",
+ 
+        "select o1.oid from Order o1 where o1.amount > " +
+            " (select o.amount*0.8 from OrderItem i, Order o" +
+            " where i.quantity > 10 and o.amount > 1000 and i.lid = o.oid)",
+            
+        "select o.oid from Order o where o.customer.name =" +
+            " (select substring(o2.customer.name, 3) from Order o2" +
+            " where o.customer.cid.id = o2.customer.cid.id)",
+            
+        "select o.oid from Order o where o.orderTs >" +
+            " (select CURRENT_TIMESTAMP from o.lineitems i)",
+            
+        "select o.oid from Order o where o.amount >" +
+            " (select SQRT(o.amount) from Order o where o.delivered = true)",
+            
+        "select o.oid from Order o where o.customer.name in" +
+            " (select CONCAT(o.customer.name, 'XX') from Order o" +
+            " where o.amount > 10)",            
+    };
 
     static String[] updates = new String[] {
         "update Order o set o.amount = 1000 where o.customer.name = " +
@@ -98,8 +126,15 @@
 
     public void testSubquery() {
         EntityManager em = emf.createEntityManager();
+        for (int i = 0; i < querys_jpa20.length; i++) {
+            String q = querys_jpa20[i];
+            System.err.println(">>> JPQL JPA2 :[ " + i + "]" +q);
+            List rs = em.createQuery(q).getResultList();
+            assertEquals(0, rs.size());
+        }
         for (int i = 0; i < querys.length; i++) {
             String q = querys[i];
+            System.err.println(">>> JPQL: [ " + i + "]"+q);
             List rs = em.createQuery(q).getResultList();
             assertEquals(0, rs.size());
         }