Estoy tratando de usar findOrCreateBy
para buscar un objeto o crear una instancia si no puedo encontrar uno que coincida, pero no está funcionando como esperaba.¿FindOrCreateBy funciona con otras instancias de dominio?
Esto es lo que tengo:
String myBaz = "some unique string"
FooType myFooType = FooType.findByName("Large")
// The Foo table is empty, so this should give me a new Foo
Foo myFoo = Foo.findOrCreateByBazAndFooType(myBaz, myFooType)
assert myFoo.baz == myBaz
assert myFoo.fooType == myFooType // Fails because myFoo.fooType is null,
// but should be set to myFooType
¿Qué estoy haciendo mal? ¿Por qué el fooType
no está configurado correctamente? ¿Es este comportamiento esperado o es esto un error en Grails?
Bueno, puede ser tonto, pero desde su base de datos está vacía, FooType.findByName ("grande") devolverá un valor nulo, ¿verdad? Y luego creas un objeto pasando este atributo nulo. Entonces, sí, myFoo.fooType realmente debe ser nulo en este caso. –
@TiagoFarias, actualicé la pregunta para ser más correcto en este punto. Los FooTypes se inicializan en el DB, por lo que no están realmente vacíos, pero no hay objetos Foo en el DB. Cuando se llama a 'findOrCreate *', 'myFooType' es una instancia persistente de' FooType'. – cdeszaq