gorm save, fazendo com que uma consulta de seleção seja acionada

Estou usando grails 1.3.7 e zkoss e meu modelo de domínio é o seguinte, carrego a entidade Person na sessão 1 e faço alterações através da interface do usuári

Ao pressionar salvar na sessão 2, desejo salvar a entidad

Para o compositor / controlador, chamo um método de serviço (transacional) e, em seguida, person.save (). Quando vejo as consultas sql sendo acionadas, vejo uma consulta que tenta recuperar o objeto empregad

Depois que o salvamento é acionado e lança uma exceção não únicaobjectexception

org.hibernate.NonUniqueObjectException: um objeto diferente com o mesmo valor de identificador já estava associado à sessão: [com.nthdimenzion.domain.Employee # 2]

Inqueri

Hibernate: select this_.id as id7_0_, this_.version as version7_0_, this_.emp_id as emp4_7_0_, this_.person_id as person5_7_0_ from person_role this_ where this_.class='com.nthdimenzion.domain.Employee' and this_.emp_id=?

class PersonService {
static transactional = true
def savePerson(Person person) {
    person = person.save();
}

}

class Person extends Party{

String firstName;
String middleName;  
static hasMany = [ personRoles : PersonRole ] -- lazy loaded

....}

class PersonRole {
public static enum ROLETYPES{
    EMPLOYEE,AUTHOR
};
public boolean hasRoleType (ROLETYPES roleType){
    return false;
}
static transients = ['ROLETYPES']
static constraints = {
}
 }



class Employee extends PersonRole{
def empRoleType = [ROLETYPES.EMPLOYEE]
String empId
    static belongsTo = [person:Person]
 static transients = ['empRoleType', 'uid']
static constraints = {
    books(nullable:true)
    empId(unique:true)
}
static hasMany = [books:Book]
static mapping = { books cascade:"all" }
static belongsTo = [person:Person]
  ......
}

Esse comportamento está correto?

questionAnswers(1)

yourAnswerToTheQuestion