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?