Grails 'false' unique error
===

I have the following domain classes (shortened version)

    class TalkingThread {

        static hasMany = [comments:Comment]
        Set comments = []
        Long uniqueHash 
    }
and
    
    class Comment {
        static belongsTo = [talkingThread:TalkingThread]
        static hasOne = [author:CommentAuthor]
        Long uniqueHash
        
        static constraints = {
            uniqueHash(unique:true)
        }
    }
and

    class CommentAuthor {
        static hasMany = [comments:Comment]
        Long hash
        String name
        String webpage
    }
the following methods

    public BlogPost removeAllComments(BlogPost post){
        def commentsBuf = []
        commentsBuf += post.comments
        commentsBuf.each{
            it.author.removeFromComments(it)
            post.removeFromComments(it)
            it.delete()
        }
        if(!post.save()){
            post.errors.allErrors.each{
                println it
            }
            throw new RuntimeException("removeAllComments")
        }
        return post
    }

    public addComments(BlogPost blogpost, def commentDetails){
        commentDetails.each{
            def comment = contructComment(it,blogpost)
            if(!comment.save()){
                comment.errors.allErrors.each{ println it}
                throw new RuntimeException("addComments")
             }
             blogpost.addToComments(comment)
        }
        return blogpost
    }

Sometimes I need to remove all of the comments from a TalkingThread and add comments that share the same uniqueHashes. So I call the *removeAllComments(..)* method, and then the *addComments(..)* method. This causes a 

*Comment.uniqueHash.unique.error.uniqueHash* which caused by a supposedly deleted comment and a 'fresh' comment being added. 

Should I be flushing? Maybe there is something wrong with my domain classes?