go-gorm/gorm · error

invalid embedded struct for %s's field %s, should be struct,

Error message

invalid embedded struct for %s's field %s, should be struct, but got %v

What it means

Error "invalid embedded struct for %s's field %s, should be struct, but got %v" thrown in go-gorm/gorm.

Source

Thrown at schema/field.go:443

						ef.PrimaryKey = false

						if val, ok := ef.TagSettings["AUTOINCREMENT"]; !ok || !utils.CheckTruth(val) {
							ef.AutoIncrement = false
						}

						if !ef.AutoIncrement && ef.DefaultValue == "" {
							ef.HasDefaultValue = false
						}
					}
				}

				for k, v := range field.TagSettings {
					ef.TagSettings[k] = v
				}
			}
		case reflect.Invalid, reflect.Uintptr, reflect.Array, reflect.Chan, reflect.Func, reflect.Interface,
			reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer, reflect.Complex64, reflect.Complex128:
			schema.err = fmt.Errorf("invalid embedded struct for %s's field %s, should be struct, but got %v", field.Schema.Name, field.Name, field.FieldType)
		}
	}

	return field
}

// create valuer, setter when parse struct
func (field *Field) setupValuerAndSetter(modelType reflect.Type) {
	// Setup NewValuePool
	field.setupNewValuePool()

	// ValueOf returns field's value and if it is zero
	fieldIndex := field.StructField.Index[0]
	switch {
	case len(field.StructField.Index) == 1 && fieldIndex >= 0:
		field.ValueOf = func(ctx context.Context, v reflect.Value) (interface{}, bool) {
			v = reflect.Indirect(v)
			fieldValue := v.Field(fieldIndex)

View on GitHub (pinned to 1d6ce99528)

Solutions

  1. Ensure the field marked with `gorm:"embedded"` is a struct or pointer to struct.
  2. Remove the embedded tag from non-struct fields.
  3. Check for typo'd field types in the embedded field declaration.

Example fix

Make the embedded field a struct (not pointer to non-struct): `gorm:"embedded"` on a struct type field.

When it happens

Trigger: Thrown at schema/field.go:443 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of go-gorm/gorm@1d6ce99528 (2026-08-15). Data as JSON: /api/errors/4b0c068f2df11e33. Report an issue: GitHub.