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");