Comment faire pour récupérer à partir de " ne pas rincer la Session après qu'une exception se produit une erreur?

J'ai deux classes :

Utilisateur

class User {
    //relationships. . . .
    static belongsTo = [ company : Company, role : Role ]
    static hasMany = [ holidays : Holiday ]
    String login
    String password
        static constraints = {
        login(unique:true,size:6..15)
        }
    String toString() {
        this.login
    }
}

Et une autre classe comme ceci:

Rôle:

class Role {
    String roleName
    String privilege
    static hasMany = [ user : User ]
        static constraints = {  
        privilege(nullable:true)
        roleName(unique:true)
        }
    String toString() {
        this.roleName
    }
}

J'ai écrit un essai d'intégration, comme ceci :

            def user1 = new User(login:"aravinth", password:"secret")
            def user2 = new User(login:"anto", password:"secret")
            def user3 = new User(login:"antoa", password:"secret")
            def role1 = new Role(roleName:"manager").save()
            def role2 = new Role(roleName:"devleoper").save()
            role1.addToUser(user1)      
            role1.addToUser(user2)      
            role2.addToUser(user3)  
            assert "manager" == user1.role.roleName

Ce test fonctionne très bien. Mais quand j'ajoute cette ligne suivante au-dessus de mon code de test :

def roleMembers = Role.findByRoleName("manager")

J'obtiens le message d'erreur comme ceci :

null id in mnm.schedule.User entry (don't flush the Session after an exception occurs)
org.hibernate.AssertionFailure: null id in mnm.schedule.User entry (don't flush the Session after an exception occurs)
    at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:108)
    at mnm.schedule.RoleItntegrationTests.testAddingRolesToUser(RoleItntegrationTests.groovy:44)

Ce qui se passe? Où j'ai eu tort?

Je suis en utilisant le Graal 2.0.

Merci d'avance.

OriginalL'auteur Ant's | 2011-12-26