Browse Source

修改时间零值传递

yjp 8 months ago
parent
commit
b3c19f7aca
1 changed files with 13 additions and 1 deletions
  1. 13 1
      framework/core/infrastructure/database/database.go

+ 13 - 1
framework/core/infrastructure/database/database.go

@@ -188,11 +188,17 @@ func formInsertTableRow(fields []sql_mapping.Field, createTime time.Time) *sql.T
 
 	for _, field := range fields {
 		fieldValue := reflect.ValueOf(field.Value)
+
 		if (field.FieldName == createdTimeFieldName || field.FieldName == lastUpdatedTimeFieldName) &&
 			reflectutils.IsValueTime(fieldValue) && fieldValue.IsZero() {
 			field.Value = createTime
 		}
 
+		if field.FieldName != createdTimeFieldName && field.FieldName != lastUpdatedTimeFieldName &&
+			reflectutils.IsValueTime(fieldValue) && fieldValue.IsZero() {
+			field.Value = nil
+		}
+
 		tableRow.Add(field.ColumnName, field.Value)
 	}
 
@@ -301,15 +307,21 @@ func UpdateEntity(executor Executor, tableName string, e any) error {
 		}
 
 		fieldValue := reflect.ValueOf(field.Value)
+
 		if field.FieldName == lastUpdatedTimeFieldName &&
 			reflectutils.IsValueTime(fieldValue) && fieldValue.IsZero() {
 			field.Value = now
 		}
 
+		if field.FieldName != lastUpdatedTimeFieldName &&
+			reflectutils.IsValueTime(fieldValue) && fieldValue.IsZero() {
+			field.Value = nil
+		}
+
 		if field.IsKey {
 			conditions.Equal(field.ColumnName, field.Value)
 		} else {
-			if reflect.ValueOf(field.Value).IsZero() && !field.CanUpdateClear {
+			if (field.Value == nil || reflect.ValueOf(field.Value).IsZero()) && !field.CanUpdateClear {
 				continue
 			}