Ich habe versucht, mir selbst zu beweisen, dass AddTo sowohl das hinzugefügte Domain-Objekt als auch seine Eltern mit einem Speichern auf dem Eltern speichern wird. Ich konstruierte diesen einfachen Test:Grails: Problem mit AddTo
package testapp
import grails.test.mixin.TestFor
import spock.lang.Specification
/**
* See the API for {@link grails.test.mixin.domain.DomainClassUnitTestMixin} for usage instructions
*/
@TestFor(Person)
class PersonSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test PersonCreation"() {
when: "create a person with a hobby"
Hobby h = new Hobby(name: "Fishing")
Person p = new Person()
p.first="Sam"
p.last="Parker"
p.age = 30
p.addToHobby(h)
p.save()
then: "Hobby is saved as well"
Hobby.count() == 1
}
}
es Rennen, erzeugte jedoch diesen Fehler bei der p.addToHobby(h)
Linie:
java.lang.NullPointerException
at org.grails.datastore.gorm.GormEntity$Trait$Helper.addTo(GormEntity.groovy:350)
at testapp.PersonSpec.test PersonCreation(PersonSpec.groovy:27)
Process finished with exit code 255
Die Domain-Klassen sind so einfach wie man erwarten könnte:
Person :
package testapp
class Person {
String first
String last
Integer age
static hasMany = [hobby: Hobby]
static constraints = {}
}
Hobby:
class Hobby {
String name
static constraints = {}
static belongsTo = [person: Person]
}
Ich habe versucht, zu reinigen und neu zu kompilieren, keine Änderung. (Grails Version 3.2.2)