diff --git a/src/nl/astraeus/database/DdlMapping.java b/src/nl/astraeus/database/DdlMapping.java index 52e55ad..1945407 100644 --- a/src/nl/astraeus/database/DdlMapping.java +++ b/src/nl/astraeus/database/DdlMapping.java @@ -30,15 +30,17 @@ } public static enum DatabaseDefinition { - H2("H2", "h2"), - POSTGRESQL("PostgreSQL", "postgres"); + H2("H2", "h2", true), + POSTGRESQL("PostgreSQL", "postgresql", false); private String name; private String packageName; + private boolean ddlInUppercase; - private DatabaseDefinition(String name, String packageName) { + private DatabaseDefinition(String name, String packageName, boolean ddlInUppercase) { this.name = name; this.packageName = packageName; + this.ddlInUppercase = ddlInUppercase; } public String getName() { @@ -48,6 +50,10 @@ public String getPackageName() { return packageName; } + + public boolean ddlNamesInUppercase() { + return ddlInUppercase; + } } private static DdlMapping instance = new DdlMapping(); @@ -153,4 +159,8 @@ public SimpleTemplate getQueryTemplate(QueryTemplates type) { return queryTemplates.get(type); } + + public boolean ddlNamesInUppercase() { + return database.ddlNamesInUppercase(); + } } diff --git a/src/nl/astraeus/database/DdlMapping.java b/src/nl/astraeus/database/DdlMapping.java index 52e55ad..1945407 100644 --- a/src/nl/astraeus/database/DdlMapping.java +++ b/src/nl/astraeus/database/DdlMapping.java @@ -30,15 +30,17 @@ } public static enum DatabaseDefinition { - H2("H2", "h2"), - POSTGRESQL("PostgreSQL", "postgres"); + H2("H2", "h2", true), + POSTGRESQL("PostgreSQL", "postgresql", false); private String name; private String packageName; + private boolean ddlInUppercase; - private DatabaseDefinition(String name, String packageName) { + private DatabaseDefinition(String name, String packageName, boolean ddlInUppercase) { this.name = name; this.packageName = packageName; + this.ddlInUppercase = ddlInUppercase; } public String getName() { @@ -48,6 +50,10 @@ public String getPackageName() { return packageName; } + + public boolean ddlNamesInUppercase() { + return ddlInUppercase; + } } private static DdlMapping instance = new DdlMapping(); @@ -153,4 +159,8 @@ public SimpleTemplate getQueryTemplate(QueryTemplates type) { return queryTemplates.get(type); } + + public boolean ddlNamesInUppercase() { + return database.ddlNamesInUppercase(); + } } diff --git a/src/nl/astraeus/database/FieldMetaData.java b/src/nl/astraeus/database/FieldMetaData.java index 02a2ec0..46978e4 100644 --- a/src/nl/astraeus/database/FieldMetaData.java +++ b/src/nl/astraeus/database/FieldMetaData.java @@ -2,6 +2,7 @@ import nl.astraeus.database.annotations.*; import nl.astraeus.template.SimpleTemplate; +import nl.astraeus.util.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -135,6 +136,10 @@ throw new IllegalStateException("Type "+field.getType().getSimpleName()+" of field "+field.getDeclaringClass().getSimpleName()+"."+field.getName()+" is not supported!"); } + if (DdlMapping.get().ddlNamesInUppercase()) { + columnName = columnName.toUpperCase(); + } + columnInfo = new ColumnInfo(columnName, type); } @@ -265,7 +270,7 @@ buffer.putLong(id); } - statement.setBlob(index, new ByteArrayInputStream(buffer.array())); + statement.setBinaryStream(index, new ByteArrayInputStream(buffer.array()), buffer.position()); break; case SERIALIZED: try (ByteArrayOutputStream objectStreamBuffer = new ByteArrayOutputStream(); @@ -273,7 +278,9 @@ out.writeObject(value); - statement.setBlob(index, new ByteArrayInputStream(objectStreamBuffer.toByteArray())); + byte [] bytes = objectStreamBuffer.toByteArray(); + + statement.setBinaryStream(index, new ByteArrayInputStream(bytes), bytes.length); } catch (IOException e) { throw new IllegalStateException(e); } @@ -340,25 +347,27 @@ } break; case COLLECTION: - Blob blob = rs.getBlob(index); - MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); - ReferentList list = new ReferentList(collectionClass, meta); + try (InputStream in = rs.getBinaryStream(index)) { + MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); + ReferentList list = new ReferentList(collectionClass, meta); - ByteBuffer buffer = ByteBuffer.wrap(blob.getBytes(0, (int) blob.length())); + ByteBuffer buffer = ByteBuffer.wrap(Util.readInputStream(in)); - while(buffer.hasRemaining()) { - id = buffer.getLong(); + while(buffer.hasRemaining()) { + id = buffer.getLong(); - list.addId(id); + list.addId(id); + } + + set(obj, list); + } catch (IOException e) { + throw new IllegalStateException(e); } - set(obj, list); break; case SERIALIZED: - Blob blub = rs.getBlob(index); - try (ByteArrayInputStream bais = new ByteArrayInputStream(blub.getBytes(0, (int) blub.length())); - ObjectInputStream ois = new ObjectInputStream(bais)) { - + try (InputStream in = rs.getBinaryStream(index); + ObjectInputStream ois = new ObjectInputStream(in)) { set(obj, ois.readObject()); } catch (ClassNotFoundException | IOException e) { throw new IllegalStateException(e); @@ -366,7 +375,6 @@ break; } } - } public void reloadReference(T result) { diff --git a/src/nl/astraeus/database/DdlMapping.java b/src/nl/astraeus/database/DdlMapping.java index 52e55ad..1945407 100644 --- a/src/nl/astraeus/database/DdlMapping.java +++ b/src/nl/astraeus/database/DdlMapping.java @@ -30,15 +30,17 @@ } public static enum DatabaseDefinition { - H2("H2", "h2"), - POSTGRESQL("PostgreSQL", "postgres"); + H2("H2", "h2", true), + POSTGRESQL("PostgreSQL", "postgresql", false); private String name; private String packageName; + private boolean ddlInUppercase; - private DatabaseDefinition(String name, String packageName) { + private DatabaseDefinition(String name, String packageName, boolean ddlInUppercase) { this.name = name; this.packageName = packageName; + this.ddlInUppercase = ddlInUppercase; } public String getName() { @@ -48,6 +50,10 @@ public String getPackageName() { return packageName; } + + public boolean ddlNamesInUppercase() { + return ddlInUppercase; + } } private static DdlMapping instance = new DdlMapping(); @@ -153,4 +159,8 @@ public SimpleTemplate getQueryTemplate(QueryTemplates type) { return queryTemplates.get(type); } + + public boolean ddlNamesInUppercase() { + return database.ddlNamesInUppercase(); + } } diff --git a/src/nl/astraeus/database/FieldMetaData.java b/src/nl/astraeus/database/FieldMetaData.java index 02a2ec0..46978e4 100644 --- a/src/nl/astraeus/database/FieldMetaData.java +++ b/src/nl/astraeus/database/FieldMetaData.java @@ -2,6 +2,7 @@ import nl.astraeus.database.annotations.*; import nl.astraeus.template.SimpleTemplate; +import nl.astraeus.util.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -135,6 +136,10 @@ throw new IllegalStateException("Type "+field.getType().getSimpleName()+" of field "+field.getDeclaringClass().getSimpleName()+"."+field.getName()+" is not supported!"); } + if (DdlMapping.get().ddlNamesInUppercase()) { + columnName = columnName.toUpperCase(); + } + columnInfo = new ColumnInfo(columnName, type); } @@ -265,7 +270,7 @@ buffer.putLong(id); } - statement.setBlob(index, new ByteArrayInputStream(buffer.array())); + statement.setBinaryStream(index, new ByteArrayInputStream(buffer.array()), buffer.position()); break; case SERIALIZED: try (ByteArrayOutputStream objectStreamBuffer = new ByteArrayOutputStream(); @@ -273,7 +278,9 @@ out.writeObject(value); - statement.setBlob(index, new ByteArrayInputStream(objectStreamBuffer.toByteArray())); + byte [] bytes = objectStreamBuffer.toByteArray(); + + statement.setBinaryStream(index, new ByteArrayInputStream(bytes), bytes.length); } catch (IOException e) { throw new IllegalStateException(e); } @@ -340,25 +347,27 @@ } break; case COLLECTION: - Blob blob = rs.getBlob(index); - MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); - ReferentList list = new ReferentList(collectionClass, meta); + try (InputStream in = rs.getBinaryStream(index)) { + MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); + ReferentList list = new ReferentList(collectionClass, meta); - ByteBuffer buffer = ByteBuffer.wrap(blob.getBytes(0, (int) blob.length())); + ByteBuffer buffer = ByteBuffer.wrap(Util.readInputStream(in)); - while(buffer.hasRemaining()) { - id = buffer.getLong(); + while(buffer.hasRemaining()) { + id = buffer.getLong(); - list.addId(id); + list.addId(id); + } + + set(obj, list); + } catch (IOException e) { + throw new IllegalStateException(e); } - set(obj, list); break; case SERIALIZED: - Blob blub = rs.getBlob(index); - try (ByteArrayInputStream bais = new ByteArrayInputStream(blub.getBytes(0, (int) blub.length())); - ObjectInputStream ois = new ObjectInputStream(bais)) { - + try (InputStream in = rs.getBinaryStream(index); + ObjectInputStream ois = new ObjectInputStream(in)) { set(obj, ois.readObject()); } catch (ClassNotFoundException | IOException e) { throw new IllegalStateException(e); @@ -366,7 +375,6 @@ break; } } - } public void reloadReference(T result) { diff --git a/src/nl/astraeus/database/MetaData.java b/src/nl/astraeus/database/MetaData.java index d41b7d2..839123d 100644 --- a/src/nl/astraeus/database/MetaData.java +++ b/src/nl/astraeus/database/MetaData.java @@ -38,6 +38,10 @@ tableName = cls.getSimpleName(); } + if (DdlMapping.get().ddlNamesInUppercase()) { + tableName = tableName.toUpperCase(); + } + Cache cache = cls.getAnnotation(Cache.class); if (cache != null) { @@ -76,11 +80,11 @@ try { // get metadata from database connection = Persister.getNewConnection(); - ResultSet result = connection.getMetaData().getTables(null, null, tableName.toUpperCase(), null); + ResultSet result = connection.getMetaData().getTables(null, null, tableName, null); if (result.next()) { for (FieldMetaData meta : fieldsMetaData) { - ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, tableName.toUpperCase(), meta.getColumnInfo().getName().toUpperCase()); + ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, tableName, meta.getColumnInfo().getName()); if (columnMetaData.next()) { if (meta.isPrimaryKey()) { @@ -186,7 +190,16 @@ statement = connection.prepareStatement(sql); statement.execute(); + + connection.commit(); } catch (SQLException e) { + if (connection != null) { + try { + connection.rollback(); + } catch (SQLException ex) { + throw new IllegalStateException(ex); + } + } throw new IllegalStateException(e); } finally { try { @@ -396,7 +409,6 @@ model.put("tableName", tableName); model.put("key", pk.getColumnInfo().getName()); model.put("query", query); - final String whereSql = whereTemplate.render(model); result = executeInNewConnection(new ExecuteConnectionWithResult>() { @@ -409,6 +421,8 @@ statement = connection.prepareStatement(whereSql); int index = 1; + logger.info("WhereSql: "+whereSql); + for (Object param : params) { setStatementParameter(statement, index++, param); } diff --git a/src/nl/astraeus/database/DdlMapping.java b/src/nl/astraeus/database/DdlMapping.java index 52e55ad..1945407 100644 --- a/src/nl/astraeus/database/DdlMapping.java +++ b/src/nl/astraeus/database/DdlMapping.java @@ -30,15 +30,17 @@ } public static enum DatabaseDefinition { - H2("H2", "h2"), - POSTGRESQL("PostgreSQL", "postgres"); + H2("H2", "h2", true), + POSTGRESQL("PostgreSQL", "postgresql", false); private String name; private String packageName; + private boolean ddlInUppercase; - private DatabaseDefinition(String name, String packageName) { + private DatabaseDefinition(String name, String packageName, boolean ddlInUppercase) { this.name = name; this.packageName = packageName; + this.ddlInUppercase = ddlInUppercase; } public String getName() { @@ -48,6 +50,10 @@ public String getPackageName() { return packageName; } + + public boolean ddlNamesInUppercase() { + return ddlInUppercase; + } } private static DdlMapping instance = new DdlMapping(); @@ -153,4 +159,8 @@ public SimpleTemplate getQueryTemplate(QueryTemplates type) { return queryTemplates.get(type); } + + public boolean ddlNamesInUppercase() { + return database.ddlNamesInUppercase(); + } } diff --git a/src/nl/astraeus/database/FieldMetaData.java b/src/nl/astraeus/database/FieldMetaData.java index 02a2ec0..46978e4 100644 --- a/src/nl/astraeus/database/FieldMetaData.java +++ b/src/nl/astraeus/database/FieldMetaData.java @@ -2,6 +2,7 @@ import nl.astraeus.database.annotations.*; import nl.astraeus.template.SimpleTemplate; +import nl.astraeus.util.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -135,6 +136,10 @@ throw new IllegalStateException("Type "+field.getType().getSimpleName()+" of field "+field.getDeclaringClass().getSimpleName()+"."+field.getName()+" is not supported!"); } + if (DdlMapping.get().ddlNamesInUppercase()) { + columnName = columnName.toUpperCase(); + } + columnInfo = new ColumnInfo(columnName, type); } @@ -265,7 +270,7 @@ buffer.putLong(id); } - statement.setBlob(index, new ByteArrayInputStream(buffer.array())); + statement.setBinaryStream(index, new ByteArrayInputStream(buffer.array()), buffer.position()); break; case SERIALIZED: try (ByteArrayOutputStream objectStreamBuffer = new ByteArrayOutputStream(); @@ -273,7 +278,9 @@ out.writeObject(value); - statement.setBlob(index, new ByteArrayInputStream(objectStreamBuffer.toByteArray())); + byte [] bytes = objectStreamBuffer.toByteArray(); + + statement.setBinaryStream(index, new ByteArrayInputStream(bytes), bytes.length); } catch (IOException e) { throw new IllegalStateException(e); } @@ -340,25 +347,27 @@ } break; case COLLECTION: - Blob blob = rs.getBlob(index); - MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); - ReferentList list = new ReferentList(collectionClass, meta); + try (InputStream in = rs.getBinaryStream(index)) { + MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); + ReferentList list = new ReferentList(collectionClass, meta); - ByteBuffer buffer = ByteBuffer.wrap(blob.getBytes(0, (int) blob.length())); + ByteBuffer buffer = ByteBuffer.wrap(Util.readInputStream(in)); - while(buffer.hasRemaining()) { - id = buffer.getLong(); + while(buffer.hasRemaining()) { + id = buffer.getLong(); - list.addId(id); + list.addId(id); + } + + set(obj, list); + } catch (IOException e) { + throw new IllegalStateException(e); } - set(obj, list); break; case SERIALIZED: - Blob blub = rs.getBlob(index); - try (ByteArrayInputStream bais = new ByteArrayInputStream(blub.getBytes(0, (int) blub.length())); - ObjectInputStream ois = new ObjectInputStream(bais)) { - + try (InputStream in = rs.getBinaryStream(index); + ObjectInputStream ois = new ObjectInputStream(in)) { set(obj, ois.readObject()); } catch (ClassNotFoundException | IOException e) { throw new IllegalStateException(e); @@ -366,7 +375,6 @@ break; } } - } public void reloadReference(T result) { diff --git a/src/nl/astraeus/database/MetaData.java b/src/nl/astraeus/database/MetaData.java index d41b7d2..839123d 100644 --- a/src/nl/astraeus/database/MetaData.java +++ b/src/nl/astraeus/database/MetaData.java @@ -38,6 +38,10 @@ tableName = cls.getSimpleName(); } + if (DdlMapping.get().ddlNamesInUppercase()) { + tableName = tableName.toUpperCase(); + } + Cache cache = cls.getAnnotation(Cache.class); if (cache != null) { @@ -76,11 +80,11 @@ try { // get metadata from database connection = Persister.getNewConnection(); - ResultSet result = connection.getMetaData().getTables(null, null, tableName.toUpperCase(), null); + ResultSet result = connection.getMetaData().getTables(null, null, tableName, null); if (result.next()) { for (FieldMetaData meta : fieldsMetaData) { - ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, tableName.toUpperCase(), meta.getColumnInfo().getName().toUpperCase()); + ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, tableName, meta.getColumnInfo().getName()); if (columnMetaData.next()) { if (meta.isPrimaryKey()) { @@ -186,7 +190,16 @@ statement = connection.prepareStatement(sql); statement.execute(); + + connection.commit(); } catch (SQLException e) { + if (connection != null) { + try { + connection.rollback(); + } catch (SQLException ex) { + throw new IllegalStateException(ex); + } + } throw new IllegalStateException(e); } finally { try { @@ -396,7 +409,6 @@ model.put("tableName", tableName); model.put("key", pk.getColumnInfo().getName()); model.put("query", query); - final String whereSql = whereTemplate.render(model); result = executeInNewConnection(new ExecuteConnectionWithResult>() { @@ -409,6 +421,8 @@ statement = connection.prepareStatement(whereSql); int index = 1; + logger.info("WhereSql: "+whereSql); + for (Object param : params) { setStatementParameter(statement, index++, param); } diff --git a/src/nl/astraeus/database/sql/postgresql/types.sql b/src/nl/astraeus/database/sql/postgresql/types.sql index b3d1fe4..f0965ab 100644 --- a/src/nl/astraeus/database/sql/postgresql/types.sql +++ b/src/nl/astraeus/database/sql/postgresql/types.sql @@ -1,4 +1,4 @@ -java.lang.String=VARCHAR(${length}) +java.lang.String=TEXT java.lang.Boolean=BOOLEAN java.lang.Integer=INTEGER java.lang.Short=SMALLINT @@ -7,4 +7,4 @@ java.lang.Double=DECIMAL(${precision}, ${scale}) java.math.BigDecimal=DECIMAL(${precision}, ${scale}) java.util.Date=TIMESTAMP -java.lang.Object=BLOB \ No newline at end of file +java.lang.Object=BYTEA diff --git a/src/nl/astraeus/database/DdlMapping.java b/src/nl/astraeus/database/DdlMapping.java index 52e55ad..1945407 100644 --- a/src/nl/astraeus/database/DdlMapping.java +++ b/src/nl/astraeus/database/DdlMapping.java @@ -30,15 +30,17 @@ } public static enum DatabaseDefinition { - H2("H2", "h2"), - POSTGRESQL("PostgreSQL", "postgres"); + H2("H2", "h2", true), + POSTGRESQL("PostgreSQL", "postgresql", false); private String name; private String packageName; + private boolean ddlInUppercase; - private DatabaseDefinition(String name, String packageName) { + private DatabaseDefinition(String name, String packageName, boolean ddlInUppercase) { this.name = name; this.packageName = packageName; + this.ddlInUppercase = ddlInUppercase; } public String getName() { @@ -48,6 +50,10 @@ public String getPackageName() { return packageName; } + + public boolean ddlNamesInUppercase() { + return ddlInUppercase; + } } private static DdlMapping instance = new DdlMapping(); @@ -153,4 +159,8 @@ public SimpleTemplate getQueryTemplate(QueryTemplates type) { return queryTemplates.get(type); } + + public boolean ddlNamesInUppercase() { + return database.ddlNamesInUppercase(); + } } diff --git a/src/nl/astraeus/database/FieldMetaData.java b/src/nl/astraeus/database/FieldMetaData.java index 02a2ec0..46978e4 100644 --- a/src/nl/astraeus/database/FieldMetaData.java +++ b/src/nl/astraeus/database/FieldMetaData.java @@ -2,6 +2,7 @@ import nl.astraeus.database.annotations.*; import nl.astraeus.template.SimpleTemplate; +import nl.astraeus.util.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -135,6 +136,10 @@ throw new IllegalStateException("Type "+field.getType().getSimpleName()+" of field "+field.getDeclaringClass().getSimpleName()+"."+field.getName()+" is not supported!"); } + if (DdlMapping.get().ddlNamesInUppercase()) { + columnName = columnName.toUpperCase(); + } + columnInfo = new ColumnInfo(columnName, type); } @@ -265,7 +270,7 @@ buffer.putLong(id); } - statement.setBlob(index, new ByteArrayInputStream(buffer.array())); + statement.setBinaryStream(index, new ByteArrayInputStream(buffer.array()), buffer.position()); break; case SERIALIZED: try (ByteArrayOutputStream objectStreamBuffer = new ByteArrayOutputStream(); @@ -273,7 +278,9 @@ out.writeObject(value); - statement.setBlob(index, new ByteArrayInputStream(objectStreamBuffer.toByteArray())); + byte [] bytes = objectStreamBuffer.toByteArray(); + + statement.setBinaryStream(index, new ByteArrayInputStream(bytes), bytes.length); } catch (IOException e) { throw new IllegalStateException(e); } @@ -340,25 +347,27 @@ } break; case COLLECTION: - Blob blob = rs.getBlob(index); - MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); - ReferentList list = new ReferentList(collectionClass, meta); + try (InputStream in = rs.getBinaryStream(index)) { + MetaData meta = MetaDataHandler.get().getMetaData(collectionClass); + ReferentList list = new ReferentList(collectionClass, meta); - ByteBuffer buffer = ByteBuffer.wrap(blob.getBytes(0, (int) blob.length())); + ByteBuffer buffer = ByteBuffer.wrap(Util.readInputStream(in)); - while(buffer.hasRemaining()) { - id = buffer.getLong(); + while(buffer.hasRemaining()) { + id = buffer.getLong(); - list.addId(id); + list.addId(id); + } + + set(obj, list); + } catch (IOException e) { + throw new IllegalStateException(e); } - set(obj, list); break; case SERIALIZED: - Blob blub = rs.getBlob(index); - try (ByteArrayInputStream bais = new ByteArrayInputStream(blub.getBytes(0, (int) blub.length())); - ObjectInputStream ois = new ObjectInputStream(bais)) { - + try (InputStream in = rs.getBinaryStream(index); + ObjectInputStream ois = new ObjectInputStream(in)) { set(obj, ois.readObject()); } catch (ClassNotFoundException | IOException e) { throw new IllegalStateException(e); @@ -366,7 +375,6 @@ break; } } - } public void reloadReference(T result) { diff --git a/src/nl/astraeus/database/MetaData.java b/src/nl/astraeus/database/MetaData.java index d41b7d2..839123d 100644 --- a/src/nl/astraeus/database/MetaData.java +++ b/src/nl/astraeus/database/MetaData.java @@ -38,6 +38,10 @@ tableName = cls.getSimpleName(); } + if (DdlMapping.get().ddlNamesInUppercase()) { + tableName = tableName.toUpperCase(); + } + Cache cache = cls.getAnnotation(Cache.class); if (cache != null) { @@ -76,11 +80,11 @@ try { // get metadata from database connection = Persister.getNewConnection(); - ResultSet result = connection.getMetaData().getTables(null, null, tableName.toUpperCase(), null); + ResultSet result = connection.getMetaData().getTables(null, null, tableName, null); if (result.next()) { for (FieldMetaData meta : fieldsMetaData) { - ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, tableName.toUpperCase(), meta.getColumnInfo().getName().toUpperCase()); + ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, tableName, meta.getColumnInfo().getName()); if (columnMetaData.next()) { if (meta.isPrimaryKey()) { @@ -186,7 +190,16 @@ statement = connection.prepareStatement(sql); statement.execute(); + + connection.commit(); } catch (SQLException e) { + if (connection != null) { + try { + connection.rollback(); + } catch (SQLException ex) { + throw new IllegalStateException(ex); + } + } throw new IllegalStateException(e); } finally { try { @@ -396,7 +409,6 @@ model.put("tableName", tableName); model.put("key", pk.getColumnInfo().getName()); model.put("query", query); - final String whereSql = whereTemplate.render(model); result = executeInNewConnection(new ExecuteConnectionWithResult>() { @@ -409,6 +421,8 @@ statement = connection.prepareStatement(whereSql); int index = 1; + logger.info("WhereSql: "+whereSql); + for (Object param : params) { setStatementParameter(statement, index++, param); } diff --git a/src/nl/astraeus/database/sql/postgresql/types.sql b/src/nl/astraeus/database/sql/postgresql/types.sql index b3d1fe4..f0965ab 100644 --- a/src/nl/astraeus/database/sql/postgresql/types.sql +++ b/src/nl/astraeus/database/sql/postgresql/types.sql @@ -1,4 +1,4 @@ -java.lang.String=VARCHAR(${length}) +java.lang.String=TEXT java.lang.Boolean=BOOLEAN java.lang.Integer=INTEGER java.lang.Short=SMALLINT @@ -7,4 +7,4 @@ java.lang.Double=DECIMAL(${precision}, ${scale}) java.math.BigDecimal=DECIMAL(${precision}, ${scale}) java.util.Date=TIMESTAMP -java.lang.Object=BLOB \ No newline at end of file +java.lang.Object=BYTEA diff --git a/src/nl/astraeus/util/Util.java b/src/nl/astraeus/util/Util.java index 5266855..e923b20 100644 --- a/src/nl/astraeus/util/Util.java +++ b/src/nl/astraeus/util/Util.java @@ -26,4 +26,19 @@ return new String(out.toByteArray(), Charset.forName("UTF-8")); } + + public static byte [] readInputStream(InputStream in) { + byte [] buffer = new byte[8196]; + int nr = 0; + + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + while((nr = in.read(buffer)) > 0) { + out.write(buffer, 0, nr); + } + + return out.toByteArray(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } }