diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java index fc43db9a1..76bb960ee 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java @@ -57,7 +57,7 @@ public enum JdbcJavaType { DOUBLE(JavaType.DOUBLE, new DialectType(JDBCType.DOUBLE, null, true, true, "DOUBLE PRECISION", "REAL"), new DialectType(JDBCType.DOUBLE, "DOUBLE PRECISION", "FLOAT8")), // NUMERIC(JavaType.BIGDECIMAL, new DialectType(JDBCType.NUMERIC, true, true), new DialectType(JDBCType.NUMERIC, true, true)), // - DECIMAL(JavaType.BIGDECIMAL, new DialectType(JDBCType.DECIMAL, "DECIMAL", true, true, "DEC", "FIXED"), + DECIMAL(JavaType.BIGDECIMAL, new DialectType(JDBCType.DECIMAL, null, true, true, "DEC", "FIXED"), new DialectType(JDBCType.DECIMAL, true, true)), // SERIAL(JavaType.INT, new DialectType(JDBCType.INTEGER, "{type} AUTO_INCREMENT", true, false), new DialectType(JDBCType.INTEGER, "SERIAL", "SERIAL4")), // @@ -79,8 +79,9 @@ public enum JdbcJavaType { TIME(JavaType.LOCAL_TIME, new DialectType(JDBCType.TIME), new DialectType(JDBCType.TIME, null, "TIME WITHOUT TIME ZONE")), // TIME_WITH_TIMEZONE(JavaType.OFFSET_TIME, new DialectType(JDBCType.TIME_WITH_TIMEZONE, "TIME"), new DialectType(JDBCType.TIME_WITH_TIMEZONE, null, "TIME WITH TIME ZONE")), // - DATETIME(JavaType.LOCAL_DATETIME, new DialectType(JDBCType.TIMESTAMP, "DATETIME", "TIMESTAMP"), + TIMESTAMP(JavaType.LOCAL_DATETIME, new DialectType(JDBCType.TIMESTAMP), new DialectType(JDBCType.TIMESTAMP, null, "TIMESTAMP WITHOUT TIME ZONE")), // + DATETIME(JavaType.LOCAL_DATETIME, new DialectType(JDBCType.TIMESTAMP, "DATETIME"), new DialectType(JDBCType.TIMESTAMP)), // TIMESTAMP_WITH_TIMEZONE(JavaType.OFFSET_DATETIME, new DialectType(JDBCType.TIMESTAMP_WITH_TIMEZONE, null, "DATETIME"), new DialectType(JDBCType.TIMESTAMP_WITH_TIMEZONE, null, "TIMESTAMP WITH TIME ZONE", "TIMESTAMPTZ")), // INTERVAL(JavaType.TIME, new DialectType(JDBCType.TIME), new DialectType(JDBCType.TIME, "INTERVAL")), // diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java index 1989ba82d..0a8f20068 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java @@ -24,6 +24,7 @@ import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaT import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DECIMAL; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.INTEGER; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TEXT; +import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TIMESTAMP; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.VARCHAR; import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.API_FIELD_AFTER; import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.API_FIELD_CODE; @@ -332,7 +333,8 @@ public class DatatableCommandFromApiJsonDeserializer { case API_FIELD_TYPE_BOOLEAN -> BOOLEAN; case API_FIELD_TYPE_DECIMAL -> DECIMAL; case API_FIELD_TYPE_DATE -> DATE; - case API_FIELD_TYPE_DATETIME, API_FIELD_TYPE_TIMESTAMP -> DATETIME; + case API_FIELD_TYPE_DATETIME -> DATETIME; + case API_FIELD_TYPE_TIMESTAMP -> TIMESTAMP; case API_FIELD_TYPE_TEXT -> TEXT; default -> throw new PlatformDataIntegrityException("error.msg.datatable.column.type.invalid", "Column type " + apiType + " is not supported."); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java index 924d62d3b..50722954c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java @@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.dataqueries.service; import static java.lang.String.format; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DATE; import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.DATETIME; +import static org.apache.fineract.infrastructure.core.service.database.JdbcJavaType.TIMESTAMP; import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.CODELOOKUP; import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.DECIMAL; import static org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData.DisplayType.INTEGER; @@ -152,7 +153,7 @@ public class GenericDataServiceImpl implements GenericDataService { if (colType == DATE) { Date tmpDate = (Date) rs.getObject(columnName); columnValues.add(tmpDate == null ? null : tmpDate.toLocalDate()); - } else if (colType == DATETIME) { + } else if (colType == DATETIME || colType == TIMESTAMP) { Object tmpDate = rs.getObject(columnName); columnValues.add( tmpDate == null ? null : (tmpDate instanceof Timestamp ? ((Timestamp) tmpDate).toLocalDateTime() : tmpDate));