You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by jo...@apache.org on 2016/06/02 01:01:03 UTC

deltaspike git commit: DELTASPIKE-1089 Added attribute to turn off forced entity conversion in native queries.

Repository: deltaspike
Updated Branches:
  refs/heads/master df1a0c9d4 -> 946b88a7b


DELTASPIKE-1089 Added attribute to turn off forced entity conversion in native queries.


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/946b88a7
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/946b88a7
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/946b88a7

Branch: refs/heads/master
Commit: 946b88a7ba2738411c203d414aab7548ea549e46
Parents: df1a0c9
Author: John D. Ament <jo...@apache.org>
Authored: Wed Jun 1 21:00:59 2016 -0400
Committer: John D. Ament <jo...@apache.org>
Committed: Wed Jun 1 21:00:59 2016 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/deltaspike/data/api/Query.java  |  6 ++++++
 .../data/impl/builder/AnnotatedQueryBuilder.java         |  9 ++++++++-
 .../data/impl/handler/EntityRepositoryHandlerTest.java   | 11 +++++++++++
 .../data/test/service/SimpleIntermediateRepository.java  |  4 ++++
 4 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/946b88a7/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/Query.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/Query.java b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/Query.java
index 9e09150..cd532c2 100755
--- a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/Query.java
+++ b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/Query.java
@@ -80,4 +80,10 @@ public @interface Query
      */
     SingleResultType singleResult() default SingleResultType.JPA;
 
+    /**
+     * For native queries only, whether or not this query returns the defined entity class or not.
+     * Due to type erasure from generics, we don't have runtime information about the return collection
+     */
+    boolean returnsEntity() default true;
+
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/946b88a7/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java
index 4421717..1d8b0d5 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java
@@ -70,7 +70,14 @@ public class AnnotatedQueryBuilder extends QueryBuilder
         else if (query.isNative())
         {
             String jpqlQuery = context.applyQueryStringPostProcessors(query.value());
-            result = params.applyTo(entityManager.createNativeQuery(jpqlQuery, context.getEntityClass()));
+            if (query.returnsEntity())
+            {
+                result = params.applyTo(entityManager.createNativeQuery(jpqlQuery, context.getEntityClass()));
+            }
+            else
+            {
+                result = params.applyTo(entityManager.createNativeQuery(jpqlQuery));
+            }
         }
         else
         {

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/946b88a7/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
index 6a8eb2a..778552d 100644
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
@@ -477,4 +477,15 @@ public class EntityRepositoryHandlerTest extends TransactionalTestCase
         assertEquals(id, found.getId());
     }
 
+    @Test
+    public void should_query_names()
+    {
+        String name = "should_return_entity_primary_key";
+        testData.createSimple(name);
+
+        List<String> names = intermediate.findAllNames();
+
+        assertEquals(name, names.get(0));
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/946b88a7/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleIntermediateRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleIntermediateRepository.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleIntermediateRepository.java
index 85ea36e..53fa47d 100644
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleIntermediateRepository.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleIntermediateRepository.java
@@ -25,6 +25,7 @@ import org.apache.deltaspike.data.api.Repository;
 import org.apache.deltaspike.data.test.domain.Simple;
 
 import javax.persistence.QueryHint;
+import java.util.List;
 
 @Repository
 public interface SimpleIntermediateRepository extends EntityRepository<Simple, Long>
@@ -34,4 +35,7 @@ public interface SimpleIntermediateRepository extends EntityRepository<Simple, L
             @QueryHint(name = "org.hibernate.comment", value = "I'm a little comment short and stout")
     })
     Simple findBy(Long id);
+
+    @Query(value = "select name from simple_table", isNative = true, returnsEntity = false)
+    List<String> findAllNames();
 }