This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new ece80bd  CAY-2651 Support multiple IDs in the SelectById query  use 
ObjectSelect instead of SelectQuery
ece80bd is described below

commit ece80bd3e9ec416719988f8903c4923593dd9530
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Wed Mar 11 17:53:38 2020 +0300

    CAY-2651 Support multiple IDs in the SelectById query
     use ObjectSelect instead of SelectQuery
---
 .../java/org/apache/cayenne/query/SelectById.java  | 25 ++++++++++------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java
index 949efdb..3f507ca 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java
@@ -330,23 +330,20 @@ public class SelectById<T> extends IndirectQuery 
implements Select<T> {
                return prefetches;
        }
 
-       @SuppressWarnings("deprecation")
        @Override
        protected Query createReplacementQuery(EntityResolver resolver) {
                ObjEntity entity = root.resolve(resolver);
 
-               SelectQuery<Object> query = new SelectQuery<>();
-               query.setRoot(entity);
-               query.setFetchingDataRows(fetchingDataRows);
-               query.setQualifier(idSpec.getQualifier(entity));
-
-               // note on caching... this hits query cache instead of object 
cache...
-               // until we merge the two this may result in not using the cache
-               // optimally - object cache may have an object, but query cache 
will not
-               query.setCacheGroup(cacheGroup);
-               query.setCacheStrategy(cacheStrategy);
-               query.setPrefetchTree(prefetches);
-
+               ObjectSelect<?> query = new ObjectSelect<>()
+                               .entityName(entity.getName())
+                               .where(idSpec.getQualifier(entity))
+                               .cacheStrategy(cacheStrategy, cacheGroup);
+               if(prefetches != null) {
+                       query.prefetch(prefetches);
+               }
+               if(fetchingDataRows) {
+                       query.fetchDataRows();
+               }
                return query;
        }
 
@@ -373,7 +370,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
 
        @SafeVarargs
        private static <E, R> Collection<R> foldArguments(Function<E, R> 
mapper, E first, E... other) {
-               List<R> result = new ArrayList<>();
+               List<R> result = new ArrayList<>(1 + other.length);
                result.add(mapper.apply(first));
                for(E next : other) {
                        result.add(mapper.apply(next));

Reply via email to