Skip to content

Many to Many assosiation fails due to invalid bulk-returning query #21

@BidyadharM

Description

@BidyadharM

When there's a Many-to-Many relationship, the Bulk returning into query, doesn't take into account the conflict resolution between an inserted and non inserted record.

Test Name: TestNestedManyToManyPreload3

Description:

type (
		Level1 struct {
			ID    uint
			Value string
		}
		Level2 struct {
			ID      uint
			L2Value string
			Level1s []*Level1 `gorm:"many2many:level1_level2;"`
		}
		Level3 struct {
			ID       uint
			L3Value  string
			Level2ID sql.NullInt64
			Level2   *Level2
		}
	)

	if err := DB.AutoMigrate(&Level3{}, &Level2{}, &Level1{}); err != nil {
		t.Error(err)
	}

	level1Zh := &Level1{Value: "zh"}
	level1Ru := &Level1{Value: "ru"}
	level1En := &Level1{Value: "en"}

	level21 := &Level2{
		L2Value: "Level2-1",
		Level1s: []*Level1{level1Zh, level1Ru, level1En},
	}

	level22 := &Level2{
		L2Value: "Level2-2",
		Level1s: []*Level1{level1Zh, level1En},
	}

	wants := []*Level3{
		{
			L3Value: "Level3-1",
			Level2:  level21,
		},
		{
			L3Value: "Level3-2",
			Level2:  level22,
		},
		{
			L3Value: "Level3-3",
			Level2:  level21,
		},
	}
        if err := DB.Save(wants[0]).Error; err != nil {
		t.Error(err)
	}

        if err := DB.Save(wants[1]).Error; err != nil {
		t.Error(err)
	}

        if err := DB.Save(wants[2]).Error; err != nil {
		t.Error(err)
	}

During the call DB.Save(wants[1]), the merge -query generated in invalid.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions