diff --git a/spring-cloud-task-core/pom.xml b/spring-cloud-task-core/pom.xml index e51ec135..1f068fd1 100755 --- a/spring-cloud-task-core/pom.xml +++ b/spring-cloud-task-core/pom.xml @@ -54,8 +54,8 @@ test - org.hsqldb - hsqldb + com.h2database + h2 test diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/H2PagingQueryProvider.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/H2PagingQueryProvider.java new file mode 100644 index 00000000..c6f2098e --- /dev/null +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/H2PagingQueryProvider.java @@ -0,0 +1,37 @@ +/* + * Copyright 2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.task.repository.database.support; + +import org.springframework.cloud.task.repository.database.PagingQueryProvider; +import org.springframework.data.domain.Pageable; + +/** + * H2 implementation of a {@link PagingQueryProvider} using database specific features. + * + * @author Glenn Renfro + */ +public class H2PagingQueryProvider extends AbstractSqlPagingQueryProvider { + + @Override + public String getPageQuery(Pageable pageable) { + String topClause = new StringBuilder().append("LIMIT ") + .append(pageable.getOffset()).append(" ") + .append(pageable.getPageSize()).toString(); + return SqlPagingQueryUtils.generateTopJumpToQuery(this, topClause); + } + +} diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBean.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBean.java index c18dd89b..7471e754 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBean.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBean.java @@ -18,6 +18,7 @@ package org.springframework.cloud.task.repository.database.support; import static org.springframework.cloud.task.repository.support.DatabaseType.HSQL; +import static org.springframework.cloud.task.repository.support.DatabaseType.H2; import static org.springframework.cloud.task.repository.support.DatabaseType.MYSQL; import static org.springframework.cloud.task.repository.support.DatabaseType.ORACLE; import static org.springframework.cloud.task.repository.support.DatabaseType.POSTGRES; @@ -61,6 +62,7 @@ public class SqlPagingQueryProviderFactoryBean implements FactoryBeanspring-boot-starter-jdbc - org.hsqldb - hsqldb + com.h2database + h2 org.springframework.boot