Author: fancy
Date: Fri Mar 27 20:18:39 2009
New Revision: 759330

URL: http://svn.apache.org/viewvc?rev=759330&view=rev
Log:
OPENJPA-961 JPA2 Query support for element collection
add support for element collection within embeddable object

Modified:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java?rev=759330&r1=759329&r2=759330&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
 Fri Mar 27 20:18:39 2009
@@ -1854,6 +1854,8 @@
         _lobField = field._lobField;
         _serializableField = field._serializableField;
         _generated = field._generated;
+        _mappedByIdValue = field._mappedByIdValue;
+        _isElementCollection = field._isElementCollection;
 
         // embedded fields can't be versions
         if (_owner.getEmbeddingMetaData() == null && _version == null)

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java?rev=759330&r1=759329&r2=759330&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
 Fri Mar 27 20:18:39 2009
@@ -1077,6 +1077,27 @@
      */
     public void queryEntityA_Embed_Coll_Integer() {
         EntityManager em = emf.createEntityManager();
+        // test select embed object from element collection in embeddable 
object
+        String[] query = {
+            "select e, a.id from " +
+                " EntityA_Embed_Coll_Integer a " +
+                " , in (a.embed.otherIntVals) e order by a.id",
+            "select e, a.embed.intVal1 from EntityA_Embed_Coll_Integer a " +
+                " , in (a.embed.otherIntVals) e order by a.id",
+            "select e, a.embed.intVal2 from " +
+                " EntityA_Embed_Coll_Integer a " +
+                " , in (a.embed.otherIntVals) e order by e",
+        };
+        List<Object[]> rs = null;
+        for (int i = 0; i < query.length; i++) {
+            rs = em.createQuery(query[i]).getResultList();
+            if (rs.size() > 0) {
+                Object obj = ((Object[]) rs.get(0))[0];
+                assertTrue(obj instanceof Integer);
+            }
+            em.clear();
+        }
+
         EntityTransaction tran = em.getTransaction();
         tran.begin();
         Query q = em.createQuery("select a from EntityA_Embed_Coll_Integer a");
@@ -1143,6 +1164,27 @@
      */
     public void queryEntityA_Embed_Coll_Embed() {
         EntityManager em = emf.createEntityManager();
+        // test select embed object from element collection in embeddable 
object
+        String[] query = {
+            "select e, e.intVal1 from " +
+                " EntityA_Embed_Coll_Embed a " +
+                " , in (a.embed.embeds) e order by e.intVal3",
+            "select e, a.id from EntityA_Embed_Coll_Embed a " +
+                " , in (a.embed.embeds) e order by a.id",
+            "select e, e.intVal1, e.intVal2 from " +
+                " EntityA_Embed_Coll_Embed a " +
+                " , in (a.embed.embeds) e order by e.intVal3",
+        };
+        List<Object[]> rs = null;
+        for (int i = 0; i < query.length; i++) {
+            rs = em.createQuery(query[i]).getResultList();
+            if (rs.size() > 0) {
+                Object obj = ((Object[]) rs.get(0))[0];
+                assertTrue(obj instanceof Embed);
+            }
+            em.clear();
+        }
+
         EntityTransaction tran = em.getTransaction();
         tran.begin();
         Query q = em.createQuery("select a from EntityA_Embed_Coll_Embed a");


Reply via email to