001package com.avaje.ebean.config.dbplatform; 002 003import javax.sql.DataSource; 004 005import com.avaje.ebean.BackgroundExecutor; 006 007/** 008 * H2 specific sequence Id Generator. 009 */ 010public class H2SequenceIdGenerator extends SequenceIdGenerator { 011 012 private final String baseSql; 013 private final String unionBaseSql; 014 015 /** 016 * Construct given a dataSource and sql to return the next sequence value. 017 */ 018 public H2SequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) { 019 super(be, ds, seqName, batchSize); 020 this.baseSql = "select " + seqName + ".nextval"; 021 this.unionBaseSql = " union " + baseSql; 022 } 023 024 public String getSql(int batchSize) { 025 026 StringBuilder sb = new StringBuilder(); 027 sb.append(baseSql); 028 for (int i = 1; i < batchSize; i++) { 029 sb.append(unionBaseSql); 030 } 031 return sb.toString(); 032 } 033}