I have already seen several threads for this issue and none could rescue I have the following in my DomainClass
def afterInsert() {     
        elasticSearchService.index(this)
}
Where elasticsaerch is a service and I have added it to the static transient list. It seems that after calling the index method successfully it throws this exception
Message: null id in com.easytha.Student entry (don't flush the Session after an exception occurs)
This is the code of index method
def  index(object) {
    try {
        if(object==null) {
            throw new NullPointerException()
        }
        if(!(object instanceof Collection || object instanceof Object[])) {
            IndexResponse response = client.prepareIndex(grailsApplication.config.esIndexName, object.getClass().getName(),object.id.toString())
                    .setSource((object as JSON).toString() )
                    .execute().actionGet()
            println "object indexed successfully" 
        }else if(object instanceof Collection || object instanceof Object[]) {
            for (var in object) {
                index(var)
            }
        }
    }catch(e) {
        e.printStackTrace();
    }
}
"object indexed successfully" is printed in the console.
The bootstrap.groovy has the following
Student student4 = new Student(firstName:'Sapan',lastName:'Parikh',email:'sapan.parikh@eclinicalworks.com',password:'test123')
    student4.save(failOnError : true)
UPDATE
I tried Student.withNewSession { elasticSearchService.index(this) } which worked.