diff --git a/README.md b/README.md index 64e8b19f..d194728f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ The latest release is available at [Maven Central Repository](https://mvnreposit org.nkjmlab sorm4j - 1.4.6 + 1.4.7 ``` We assume the following customer table in example: `create table customer (id int primary key, name varchar, address varchar)` diff --git a/pom.xml b/pom.xml index 984cba9a..8b22e1a6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ sorm4j-parent sorm4j-parent Simple micro Object-Relation Mapper for Java - 1.4.6 + 1.4.7 pom https://github.com/nkjmlab diff --git a/sorm4j-example/pom.xml b/sorm4j-example/pom.xml index b1e3a1d3..137a0783 100644 --- a/sorm4j-example/pom.xml +++ b/sorm4j-example/pom.xml @@ -2,11 +2,11 @@ 4.0.0 org.nkjmlab sorm4j-example - 1.4.6 + 1.4.7 Example of Sorm4j - 1.4.6 + 1.4.7 UTF-8 -Xdoclint:none true diff --git a/sorm4j-jmh/pom.xml b/sorm4j-jmh/pom.xml index fe258269..27323d12 100644 --- a/sorm4j-jmh/pom.xml +++ b/sorm4j-jmh/pom.xml @@ -21,12 +21,12 @@ 4.0.0 org.nkjmlab sorm4j-jmh - 1.4.6 + 1.4.7 jar Sorm4j benchmark - 1.4.6 + 1.4.7 UTF-8 diff --git a/sorm4j/pom.xml b/sorm4j/pom.xml index 6ebfcaa4..377f5b9a 100644 --- a/sorm4j/pom.xml +++ b/sorm4j/pom.xml @@ -7,7 +7,7 @@ org.nkjmlab sorm4j-parent - 1.4.6 + 1.4.7 1.7.30 @@ -22,7 +22,7 @@ org.apache.logging.log4j log4j-api - 2.17.1 + 2.17.2 true @@ -57,14 +57,14 @@ org.mockito mockito-core - 4.2.0 + 4.4.0 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.1 + 2.17.2 test @@ -78,28 +78,28 @@ mysql mysql-connector-java - 8.0.27 + 8.0.28 test org.postgresql postgresql - 42.3.1 + 42.3.3 test com.microsoft.sqlserver mssql-jdbc - 10.1.0.jre17-preview + 10.2.0.jre17 test com.oracle.database.jdbc ojdbc10 - 19.13.0.0.1 + 19.14.0.0 test @@ -131,8 +131,35 @@ src/test/java/ - --illegal-access=warn --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.annotation=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.common=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.context=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.mapping=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.result=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.sql=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.table=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.util.command=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.util.h2.sql=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.util.logger=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.util.sql=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.util.table_def=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.util.table_def.annotation=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal.common=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal.mapping=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal.mapping.multirow=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal.result=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal.sql=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.internal.util=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/org.nkjmlab.sorm4j.engine=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/repackage.net.sf.persist.tests.common=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/repackage.net.sf.persist.tests.engine.h2=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/repackage.net.sf.persist.tests.engine.mysql=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/repackage.net.sf.persist.tests.engine.oracle=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/repackage.net.sf.persist.tests.engine.postgresql=ALL-UNNAMED + --add-opens org.nkjmlab.sorm4j/repackage.net.sf.persist.tests.engine.sqlserver=ALL-UNNAMED ${argLine} diff --git a/sorm4j/src/main/java/module-info.java b/sorm4j/src/main/java/module-info.java new file mode 100644 index 00000000..8c992fd3 --- /dev/null +++ b/sorm4j/src/main/java/module-info.java @@ -0,0 +1,19 @@ +module org.nkjmlab.sorm4j { + requires transitive java.sql; + requires transitive org.apache.logging.log4j; + requires transitive org.slf4j; + exports org.nkjmlab.sorm4j; + exports org.nkjmlab.sorm4j.annotation; + exports org.nkjmlab.sorm4j.common; + exports org.nkjmlab.sorm4j.context; + exports org.nkjmlab.sorm4j.mapping; + exports org.nkjmlab.sorm4j.result; + exports org.nkjmlab.sorm4j.sql; + exports org.nkjmlab.sorm4j.table; + exports org.nkjmlab.sorm4j.util.command; + exports org.nkjmlab.sorm4j.util.h2.sql; + exports org.nkjmlab.sorm4j.util.logger; + exports org.nkjmlab.sorm4j.util.sql; + exports org.nkjmlab.sorm4j.util.table_def; + exports org.nkjmlab.sorm4j.util.table_def.annotation; +} diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/Sorm.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/Sorm.java index e6839e4b..912ad615 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/Sorm.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/Sorm.java @@ -4,10 +4,10 @@ import javax.sql.DataSource; import org.nkjmlab.sorm4j.annotation.Experimental; import org.nkjmlab.sorm4j.common.ConsumerHandler; +import org.nkjmlab.sorm4j.common.DriverManagerDataSource; import org.nkjmlab.sorm4j.common.FunctionHandler; import org.nkjmlab.sorm4j.context.SormContext; import org.nkjmlab.sorm4j.internal.SormImpl; -import org.nkjmlab.sorm4j.internal.util.DriverManagerDataSource; import org.nkjmlab.sorm4j.table.Table; /** diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSource.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/common/DriverManagerDataSource.java similarity index 94% rename from sorm4j/src/main/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSource.java rename to sorm4j/src/main/java/org/nkjmlab/sorm4j/common/DriverManagerDataSource.java index 8d42d3bd..2d64734a 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSource.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/common/DriverManagerDataSource.java @@ -1,4 +1,4 @@ -package org.nkjmlab.sorm4j.internal.util; +package org.nkjmlab.sorm4j.common; import java.io.PrintWriter; import java.sql.Connection; diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/TableDefinition.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/TableDefinition.java index a89b14c3..d4bea0fb 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/TableDefinition.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/TableDefinition.java @@ -8,9 +8,11 @@ import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import org.nkjmlab.sorm4j.Orm; import org.nkjmlab.sorm4j.annotation.Experimental; @@ -50,8 +52,7 @@ public static TableDefinition.Builder builder(String tableName) { public static TableDefinition.Builder builder(Class ormRecordClass) { - Builder builder = - TableDefinition.builder(StringCache.toCanonicalCase(toTableName(ormRecordClass))); + Builder builder = TableDefinition.builder(toUpperSnakeCase(toTableName(ormRecordClass))); Optional.ofNullable(ormRecordClass.getAnnotation(Indexes.class)).map(a -> a.value()).ifPresent( vals -> Arrays.stream(vals).forEach(v -> builder.addIndexDefinition(v.split(",")))); @@ -75,8 +76,12 @@ public static TableDefinition.Builder builder(Class ormRecordClass) { List opt = new ArrayList<>(); opt.add(TableDefinition.toSqlDataType(field.getType())); - for (Annotation ann : parameterAnnotationsOfConstructor == null ? field.getAnnotations() - : parameterAnnotationsOfConstructor[i]) { + Set anns = new LinkedHashSet<>(); + Arrays.stream(field.getAnnotations()).forEach(a -> anns.add(a)); + if (parameterAnnotationsOfConstructor != null) { + Arrays.stream(parameterAnnotationsOfConstructor[i]).forEach(a -> anns.add(a)); + } + for (Annotation ann : anns) { if (ann instanceof PrimaryKey) { opt.add("primary key"); } else if (ann instanceof AutoIncrement) { @@ -84,9 +89,9 @@ public static TableDefinition.Builder builder(Class ormRecordClass) { } else if (ann instanceof NotNull) { opt.add("not null"); } else if (ann instanceof Index) { - builder.addIndexDefinition(field.getName()); + builder.addIndexDefinition(toUpperSnakeCase(field.getName())); } else if (ann instanceof Unique) { - builder.addUniqueConstraint(field.getName()); + builder.addUniqueConstraint(toUpperSnakeCase(field.getName())); } else if (ann instanceof Check) { opt.add("check (" + ((Check) ann).value() + ")"); } else if (ann instanceof Default) { @@ -94,11 +99,20 @@ public static TableDefinition.Builder builder(Class ormRecordClass) { } } - builder.addColumnDefinition(field.getName(), opt.toArray(String[]::new)); + builder.addColumnDefinition(toUpperSnakeCase(field.getName()), opt.toArray(String[]::new)); } return builder; } + /** + * Given a field or class name in the form CompoundName (for classes) or compoundName (for fields) + * will return a set of guessed names such as [COMPOUND_NAME]. + */ + public static String toUpperSnakeCase(final String compoundName) { + String camelCase = compoundName.substring(0, 1).toLowerCase() + compoundName.substring(1); + return StringCache.toUpperCase(camelCase.replaceAll("([A-Z])", "_$1")); + } + private static String toTableName(Class ormRecordClass) { OrmTable ann = ormRecordClass.getAnnotation(OrmTable.class); if (ann == null || ann.value().length() == 0) { diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/AutoIncrement.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/AutoIncrement.java index fa6d6fa9..f9fd88c9 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/AutoIncrement.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/AutoIncrement.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface AutoIncrement { } diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Check.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Check.java index 727faa4a..6b8c18e5 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Check.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Check.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface Check { String value(); } diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Default.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Default.java index 29c1b2e7..7d697a92 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Default.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Default.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface Default { String value(); } diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Index.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Index.java index 198ba67e..6b0d8e2d 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Index.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Index.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface Index { } diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/NotNull.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/NotNull.java index 93629e8c..dad96925 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/NotNull.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/NotNull.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface NotNull { } diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/PrimaryKey.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/PrimaryKey.java index 5bece241..9509c01b 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/PrimaryKey.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/PrimaryKey.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface PrimaryKey { } diff --git a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Unique.java b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Unique.java index 04893a22..a249e385 100644 --- a/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Unique.java +++ b/sorm4j/src/main/java/org/nkjmlab/sorm4j/util/table_def/annotation/Unique.java @@ -6,7 +6,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) +@Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface Unique { } diff --git a/sorm4j/src/test/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSourceTest.java b/sorm4j/src/test/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSourceTest.java index 8ba3d7f7..acfd69b7 100644 --- a/sorm4j/src/test/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSourceTest.java +++ b/sorm4j/src/test/java/org/nkjmlab/sorm4j/internal/util/DriverManagerDataSourceTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.*; import java.sql.SQLException; import org.junit.jupiter.api.Test; +import org.nkjmlab.sorm4j.common.DriverManagerDataSource; import org.nkjmlab.sorm4j.test.common.SormTestUtils; class DriverManagerDataSourceTest { diff --git a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableSchemaKeywordTest.java b/sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableSchemaKeywordTest.java similarity index 87% rename from sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableSchemaKeywordTest.java rename to sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableSchemaKeywordTest.java index efe228f6..1ba43e9e 100644 --- a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableSchemaKeywordTest.java +++ b/sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableSchemaKeywordTest.java @@ -1,4 +1,4 @@ -package org.nkjmlab.sorm4j.util.table; +package org.nkjmlab.sorm4j.table; import static org.assertj.core.api.Assertions.*; import static org.nkjmlab.sorm4j.util.sql.SqlKeyword.*; diff --git a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableSchemaTest.java b/sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableSchemaTest.java similarity index 93% rename from sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableSchemaTest.java rename to sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableSchemaTest.java index f731a041..387d90a4 100644 --- a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableSchemaTest.java +++ b/sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableSchemaTest.java @@ -1,8 +1,8 @@ -package org.nkjmlab.sorm4j.util.table; +package org.nkjmlab.sorm4j.table; import static org.assertj.core.api.Assertions.*; +import static org.nkjmlab.sorm4j.table.TableSchemaTest.TempGuestTable.Column.*; import static org.nkjmlab.sorm4j.util.sql.SqlKeyword.*; -import static org.nkjmlab.sorm4j.util.table.TableSchemaTest.TempGuestTable.Column.*; import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.nkjmlab.sorm4j.Sorm; diff --git a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableTest.java b/sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableTest.java similarity index 95% rename from sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableTest.java rename to sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableTest.java index 03bb580e..00ca033e 100644 --- a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table/TableTest.java +++ b/sorm4j/src/test/java/org/nkjmlab/sorm4j/table/TableTest.java @@ -1,4 +1,4 @@ -package org.nkjmlab.sorm4j.util.table; +package org.nkjmlab.sorm4j.table; import static org.assertj.core.api.Assertions.*; import static org.nkjmlab.sorm4j.test.common.SormTestUtils.*; @@ -9,7 +9,6 @@ import org.junit.jupiter.api.Test; import org.nkjmlab.sorm4j.Sorm; import org.nkjmlab.sorm4j.sql.ParameterizedSql; -import org.nkjmlab.sorm4j.table.BasicTable; import org.nkjmlab.sorm4j.test.common.Guest; import org.nkjmlab.sorm4j.test.common.Player; import org.nkjmlab.sorm4j.test.common.Sport; diff --git a/sorm4j/src/test/java/org/nkjmlab/sorm4j/test/common/SormTestUtils.java b/sorm4j/src/test/java/org/nkjmlab/sorm4j/test/common/SormTestUtils.java index f3a6a14c..fe3dfa59 100644 --- a/sorm4j/src/test/java/org/nkjmlab/sorm4j/test/common/SormTestUtils.java +++ b/sorm4j/src/test/java/org/nkjmlab/sorm4j/test/common/SormTestUtils.java @@ -3,8 +3,8 @@ import static org.nkjmlab.sorm4j.util.sql.SqlKeyword.*; import java.util.concurrent.atomic.AtomicInteger; import org.nkjmlab.sorm4j.Sorm; +import org.nkjmlab.sorm4j.common.DriverManagerDataSource; import org.nkjmlab.sorm4j.context.SormContext; -import org.nkjmlab.sorm4j.internal.util.DriverManagerDataSource; import org.nkjmlab.sorm4j.util.table_def.BasicTableWithDefinition; import org.nkjmlab.sorm4j.util.table_def.TableDefinition; import org.nkjmlab.sorm4j.util.table_def.TableWithDefinition; diff --git a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table_def/TableDefinitionTest.java b/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table_def/TableDefinitionTest.java index 216e9c41..df96a036 100644 --- a/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table_def/TableDefinitionTest.java +++ b/sorm4j/src/test/java/org/nkjmlab/sorm4j/util/table_def/TableDefinitionTest.java @@ -34,7 +34,7 @@ void test() throws URISyntaxException { Sorm sorm = SormTestUtils.createSormWithNewContext(); TableDefinition def = TableDefinition.builder(TableDefExample.class).build(); assertThat(def.getTableNameAndColumnDefinitions()).isEqualTo( - "TABLEDEFEXAMPLES(id bigint primary key auto_increment, booleanCol boolean, byteCol tinyint, charCol character, shortCol smallint, intCol integer default 0, floatCol float, doubleCol double check (doubleCol>0), bigDecimal numeric, phoneNumber varchar not null, localDateCol date, localTimeCol time, localDateTime timestamp, offsetTime time with time zone, offsetDateTime timestamp with time zone, blob blob, clob clob, inputStream longvarbinary, reader longvarchar, unique(phoneNumber))"); + "TABLE_DEF_EXAMPLES(ID bigint primary key auto_increment, BOOLEAN_COL boolean, BYTE_COL tinyint, CHAR_COL character, SHORT_COL smallint, INT_COL integer default 0, FLOAT_COL float, DOUBLE_COL double check (double_col>0), BIG_DECIMAL numeric, PHONE_NUMBER varchar not null, LOCAL_DATE_COL date, LOCAL_TIME_COL time, LOCAL_DATE_TIME timestamp, OFFSET_TIME time with time zone, OFFSET_DATE_TIME timestamp with time zone, BLOB blob, CLOB clob, INPUT_STREAM longvarbinary, READER longvarchar, unique(PHONE_NUMBER))"); sorm.executeUpdate(def.getCreateTableIfNotExistsStatement()); String selectSql = H2CsvReadSql @@ -74,7 +74,7 @@ public static class TableDefExample { public TableDefExample(@PrimaryKey @AutoIncrement Long id, Boolean booleanCol, Byte byteCol, Character charCol, Short shortCol, @Default("0") Integer intCol, Float floatCol, - @Check("doubleCol>0") Double doubleCol, BigDecimal bigDecimal, + @Check("double_col>0") Double doubleCol, BigDecimal bigDecimal, @Index @Unique @NotNull String phoneNumber, LocalDate localDateCol, LocalTime localTimeCol, LocalDateTime localDateTimeCol, OffsetTime offsetTime, OffsetDateTime offsetDateTime, Blob blob, Clob clob, InputStream inputStream, Reader reader) {