Dúvida em relacionamento com a própria classe
05/10/2013 12:05
Dae Galera !
Estou com uma dúvida em relacionamentos com a própria classe
Tenho um classe Participante onde um participante pode ser um vendedor ou um gerente. A única diferença entre eles é o Cargo.
class Participante {
String nome
String cpf
String email
Date dataNascimento
String telefoneResidencial
String telefoneCelular
String nomeMae
String nomePai
Date dateCreated
Date lastUpdated
Endereco endereco
Cargo cargo
static hasMany = [gerentes: VendedorGerente, vendedores: VendedorGerente]
static mappedBy = [gerentes: "vendedor", vendedores: "gerente"]
static hasOne = [ lojaParticipante: LojaParticipante]
static embedded = ["endereco"]
...
Eu fiz a ligação entre eles seguindo a idéia que um vendedor pode ter vários gerentes e um gerente pode ter vários vendedores. Para realizar está ligação, eu fiz uma outra classe chamada VendedorGerente
class VendedorGerente implements Serializable{
static belongsTo = [gerente: Participante, vendedor: Participante]
static mapping = {
id composite: ['gerente', 'vendedor']
version false
}
}
Até agora estava tudo funcionando tranquilamente mas eu tive uma certa dificultade em efetuar buscas nessa domain, segue um exemplo:
no log do sql, esta consulta aparece sem o join e acontece uma exception por não encontrar a coluna cpf no where
def criteriaVendedorGerente = VendedorGerente.createCriteria()
def buscarVendedorGerente = criteriaVendedorGerente.list{
createAlias('gerente', 'g')
eq('vendedor', vendedorInstance)
eq('g.cpf', cpfGerente)
}[0]
A única forma que eu encontrei no momento é de instanciar o vendedor e o gerente e buscar dessa maneira:
def buscarVendedorGerente = VendedorGerente.findByVendedorAndGerente(vendedor, gerente)
A minha dúvida é se eu estou fazendo alguma coisa errada nesse mapeamento e se existe outra forma de buscar esta domain
Tags:
relacionamento ligação