Parcourir la source

fixes #1880 pagination not work (#1891)

fixes #1880 pagination not work
kezhenxu94 il y a 6 ans
Parent
commit
db54e5082b

+ 2 - 2
apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/InstanceConfigRepository.java

@@ -35,13 +35,13 @@ public interface InstanceConfigRepository extends PagingAndSortingRepository<Ins
       value = "select b.Id from `InstanceConfig` a inner join `Instance` b on b.Id =" +
           " a.`InstanceId` where a.`ConfigAppId` = :configAppId and a.`ConfigClusterName` = " +
           ":clusterName and a.`ConfigNamespaceName` = :namespaceName and a.`DataChange_LastTime` " +
-          "> :validDate and b.`AppId` = :instanceAppId and ?#{#pageable.pageSize} > 0",
+          "> :validDate and b.`AppId` = :instanceAppId",
       countQuery = "select count(1) from `InstanceConfig` a inner join `Instance` b on b.id =" +
           " a.`InstanceId` where a.`ConfigAppId` = :configAppId and a.`ConfigClusterName` = " +
           ":clusterName and a.`ConfigNamespaceName` = :namespaceName and a.`DataChange_LastTime` " +
           "> :validDate and b.`AppId` = :instanceAppId",
       nativeQuery = true)
-  Page<Object[]> findInstanceIdsByNamespaceAndInstanceAppId(
+  Page<Object> findInstanceIdsByNamespaceAndInstanceAppId(
       @Param("instanceAppId") String instanceAppId, @Param("configAppId") String configAppId,
       @Param("clusterName") String clusterName, @Param("namespaceName") String namespaceName,
       @Param("validDate") Date validDate, Pageable pageable);

+ 3 - 2
apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/InstanceService.java

@@ -6,6 +6,7 @@ import com.ctrip.framework.apollo.biz.repository.InstanceConfigRepository;
 import com.ctrip.framework.apollo.biz.repository.InstanceRepository;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
+import java.util.Objects;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Pageable;
@@ -91,7 +92,7 @@ public class InstanceService {
       appId, String clusterName, String
                                                                      namespaceName, Pageable
                                                                      pageable) {
-    Page<Object[]> instanceIdResult = instanceConfigRepository
+    Page<Object> instanceIdResult = instanceConfigRepository
         .findInstanceIdsByNamespaceAndInstanceAppId(instanceAppId, appId, clusterName,
             namespaceName, getValidInstanceConfigDate(), pageable);
 
@@ -116,7 +117,7 @@ public class InstanceService {
         }
 
         return null;
-      }).filter((Long value) -> value != null).collect(Collectors.toSet());
+      }).filter(Objects::nonNull).collect(Collectors.toSet());
       instances = findInstancesByIds(instanceIds);
     }
 

+ 57 - 0
apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/repository/InstanceConfigRepositoryTest.java

@@ -0,0 +1,57 @@
+package com.ctrip.framework.apollo.biz.repository;
+
+import com.ctrip.framework.apollo.biz.AbstractIntegrationTest;
+import com.ctrip.framework.apollo.biz.entity.Instance;
+import com.ctrip.framework.apollo.biz.entity.InstanceConfig;
+import java.util.Date;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.test.annotation.Rollback;
+
+import static org.hamcrest.Matchers.hasSize;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Created by kezhenxu94 at 2019/1/18 15:33.
+ *
+ * @author kezhenxu94 (kezhenxu94 at 163 dot com)
+ */
+public class InstanceConfigRepositoryTest extends AbstractIntegrationTest {
+  @Autowired
+  private InstanceConfigRepository instanceConfigRepository;
+  @Autowired
+  private InstanceRepository instanceRepository;
+
+  @Rollback
+  @Test
+  public void shouldPaginated() {
+    for (int i = 0; i < 25; i++) {
+      Instance instance = new Instance();
+      instance.setAppId("appId");
+      instanceRepository.save(instance);
+
+      final InstanceConfig instanceConfig = new InstanceConfig();
+      instanceConfig.setConfigAppId("appId");
+      instanceConfig.setInstanceId(instance.getId());
+      instanceConfig.setConfigClusterName("cluster");
+      instanceConfig.setConfigNamespaceName("namespace");
+      instanceConfigRepository.save(instanceConfig);
+    }
+    Page<Object> ids = instanceConfigRepository.findInstanceIdsByNamespaceAndInstanceAppId(
+        "appId", "appId", "cluster", "namespace", new Date(0), PageRequest.of(0, 10)
+    );
+    assertThat(ids.getContent(), hasSize(10));
+
+    ids = instanceConfigRepository.findInstanceIdsByNamespaceAndInstanceAppId(
+        "appId", "appId", "cluster", "namespace", new Date(0), PageRequest.of(1, 10)
+    );
+    assertThat(ids.getContent(), hasSize(10));
+
+    ids = instanceConfigRepository.findInstanceIdsByNamespaceAndInstanceAppId(
+        "appId", "appId", "cluster", "namespace", new Date(0), PageRequest.of(2, 10)
+    );
+    assertThat(ids.getContent(), hasSize(5));
+  }
+}

+ 0 - 1
apollo-biz/src/test/resources/application.properties

@@ -3,4 +3,3 @@ spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.Ph
 spring.jpa.properties.hibernate.show_sql=false
 spring.h2.console.enabled = true
 spring.h2.console.settings.web-allow-others=true
-