diff --git a/base.go b/base.go index 2bfe6f8..fed4791 100644 --- a/base.go +++ b/base.go @@ -5,6 +5,7 @@ import ( "reflect" "strings" "time" + "database/sql" ) type base struct { @@ -67,6 +68,8 @@ func (d *base) SetModelValue(driverValue, fieldValue reflect.Value) error { } else { panic(fmt.Sprintf("cannot set created value %T", driverValue.Elem().Interface())) } + } else if fieldType == reflect.TypeOf(sql.NullInt64{}) { + fieldValue.Set(reflect.ValueOf(sql.NullInt64{driverValue.Elem().Int(),true})) } } return nil diff --git a/mysql.go b/mysql.go index 64e7514..ae65afc 100644 --- a/mysql.go +++ b/mysql.go @@ -1,6 +1,7 @@ package hood import ( + "database/sql" "fmt" "reflect" "time" @@ -42,7 +43,7 @@ func (d *mysql) SqlType(f interface{}, size int) string { return "boolean" case int, int8, int16, int32, uint, uint8, uint16, uint32: return "int" - case int64, uint64: + case int64, uint64, sql.NullInt64: return "bigint" case float32, float64: return "double" diff --git a/postgres.go b/postgres.go index 5f171c4..7dc6377 100644 --- a/postgres.go +++ b/postgres.go @@ -1,6 +1,7 @@ package hood import ( + "database/sql" "fmt" _ "github.com/lib/pq" "strings" @@ -31,7 +32,7 @@ func (d *postgres) SqlType(f interface{}, size int) string { return "boolean" case int, int8, int16, int32, uint, uint8, uint16, uint32: return "integer" - case int64, uint64: + case int64, uint64, sql.NullInt64: return "bigint" case float32, float64: return "double precision"