diff --git a/src/org/redkale/source/DataJdbcSource.java b/src/org/redkale/source/DataJdbcSource.java index e625577f3..8fe01a332 100644 --- a/src/org/redkale/source/DataJdbcSource.java +++ b/src/org/redkale/source/DataJdbcSource.java @@ -174,9 +174,11 @@ public class DataJdbcSource extends DataSqlSource { prestmt.setObject(++i, ((AtomicInteger) val).get()); } else if (val instanceof AtomicLong) { prestmt.setObject(++i, ((AtomicLong) val).get()); - } else if (val != null && !(val instanceof Number) && !(val instanceof CharSequence) && !(entity instanceof java.util.Date) + } else if (val != null && !(val instanceof Number) && !(val instanceof CharSequence) && !(val instanceof java.util.Date) && !val.getClass().getName().startsWith("java.sql.") && !val.getClass().getName().startsWith("java.time.")) { prestmt.setObject(++i, info.jsonConvert.convertTo(attr.genericType(), val)); + } else if (val == null && info.isNotNullJson(attr)) { + prestmt.setObject(++i, ""); } else { prestmt.setObject(++i, val); } diff --git a/src/org/redkale/source/EntityInfo.java b/src/org/redkale/source/EntityInfo.java index 655dfbeed..f516f8615 100644 --- a/src/org/redkale/source/EntityInfo.java +++ b/src/org/redkale/source/EntityInfo.java @@ -1084,6 +1084,16 @@ public final class EntityInfo { return attr == null ? false : notNullColumns.contains(attr.field()); } + public boolean isNotNullJson(Attribute attr) { + if (attr == null) return false; + return notNullColumns.contains(attr.field()) + && !Number.class.isAssignableFrom(attr.type()) + && !CharSequence.class.isAssignableFrom(attr.type()) + && java.util.Date.class != attr.type() + && !attr.type().getName().startsWith("java.sql.") + && !attr.type().getName().startsWith("java.time."); + } + /** * 判断日志级别 *