diff --git a/pom.xml b/pom.xml index 3d87a7c..6c197a1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jminiorm jminiorm - 0.0.24 + 0.0.26 UTF-8 diff --git a/src/main/java/org/jminiorm/dialect/GenericSQLDialect.java b/src/main/java/org/jminiorm/dialect/GenericSQLDialect.java index 85b5b98..3bc604b 100644 --- a/src/main/java/org/jminiorm/dialect/GenericSQLDialect.java +++ b/src/main/java/org/jminiorm/dialect/GenericSQLDialect.java @@ -80,10 +80,9 @@ protected String sqlForSelectIdEscaped(String schema, List columns, Stri (orderBy == null ? "" : ("ORDER BY " + orderBy + "\n")); } - @Override public String sqlForCreateSchema(String schema) { - return "CREATE SCHEMA IF NOT EXISTS " + identifier(schema, true); + return "CREATE SCHEMA IF NOT EXISTS " + identifier(schema, false); } @Override diff --git a/src/main/java/org/jminiorm/dialect/SybaseASASQLDialect.java b/src/main/java/org/jminiorm/dialect/SybaseASASQLDialect.java index 72e1ef4..d699b49 100644 --- a/src/main/java/org/jminiorm/dialect/SybaseASASQLDialect.java +++ b/src/main/java/org/jminiorm/dialect/SybaseASASQLDialect.java @@ -11,6 +11,23 @@ protected String sqlForAutoIncrement() { return "DEFAULT AUTOINCREMENT"; } + @Override + public String sqlForCreateSchema(String schema) { + // SybaseASA does not support the common concept of schema, however a schema is auto-created par user, with an identical name + // the user created is never used for login so the password has not to be known + // as no IF NOT EXISTS is available, it is better not to use it for the moment + // return "CREATE USER " + identifier(schema, false) + " IDENTIFIED BY " + quoteIdentifier(UUID.randomUUID().toString()); + return null; + } + + @Override + protected String sqlForColumnType(Class javaType, Integer length, Integer scale, Integer precision, + boolean generated) { + if ((javaType == Boolean.class) || (javaType == boolean.class)) + return "INTEGER"; + else return super.sqlForColumnType(javaType, length, scale, precision, generated); + } + @Override public String sqlForSelect(String sql, Integer limit, Integer offset) { String expr = ""; @@ -22,5 +39,4 @@ public String sqlForSelect(String sql, Integer limit, Integer offset) { sql = sql.replaceAll("(?i)^select ", "select " + expr); return sql; } - } diff --git a/src/main/java/org/jminiorm/query/orm/AbstractORMQuery.java b/src/main/java/org/jminiorm/query/orm/AbstractORMQuery.java index a0dc816..abbd109 100644 --- a/src/main/java/org/jminiorm/query/orm/AbstractORMQuery.java +++ b/src/main/java/org/jminiorm/query/orm/AbstractORMQuery.java @@ -35,7 +35,7 @@ protected void verifySchemaExistence() { String schema = getMapping().getSchema(); if (schema != null && !schema.isEmpty()) { String sql = getQueryTarget().getConfig().getDialect().sqlForCreateSchema(schema); - getQueryTarget().sql(sql); + if (sql != null) getQueryTarget().sql(sql); } } } diff --git a/src/test/java/org/jminiorm/SchemaBean.java b/src/test/java/org/jminiorm/SchemaBean.java index c899cf5..58fb9c0 100644 --- a/src/test/java/org/jminiorm/SchemaBean.java +++ b/src/test/java/org/jminiorm/SchemaBean.java @@ -20,10 +20,13 @@ public class SchemaBean { @Column(name = "short_text", length = 16) private String shortText; private String longText; + @Column(name = "the_date") private Date date; private LocalDate localDate; private LocalDateTime localDateTime; private Integer someInt; + // solution for a database without support of BOOLEAN + // @Column(columnDefinition = "INTEGER") private Boolean someBoolean; private byte[] bytes; @Enumerated(EnumType.ORDINAL) diff --git a/src/test/java/org/jminiorm/TestSchemaQueries.java b/src/test/java/org/jminiorm/TestSchemaQueries.java index 2de2688..34c5d99 100644 --- a/src/test/java/org/jminiorm/TestSchemaQueries.java +++ b/src/test/java/org/jminiorm/TestSchemaQueries.java @@ -63,18 +63,18 @@ public void testBatchExecutionMode() throws Exception { testQueriesOnDatabase(db); } - // @Test - // public void testPostgreSQL() throws Exception { - // Database db; - // IDatabaseConfig config; - // config = new DatabaseConfig.Builder() - // .dataSource("jdbc:postgresql://localhost/jminiorm", "jminiorm", "jminiorm") - // .statementExecutor(new DefaultStatementExecutor()) - // .dialect(new PostgreSQLDialect()) - // .build(); - // db = new Database(config); - // testQueriesOnDatabase(db); - // } +// @Test +// public void testPostgreSQL() throws Exception { +// Database db; +// IDatabaseConfig config; +// config = new DatabaseConfig.Builder() +// .dataSource("jdbc:postgresql://localhost/jminiorm", "jminiorm", "jminiorm") +// .statementExecutor(new DefaultStatementExecutor()) +// .dialect(new PostgreSQLDialect()) +// .build(); +// db = new Database(config); +// testQueriesOnDatabase(db); +// } protected void testQueriesOnDatabase(IDatabase db) throws Exception { // Table creation :