Dúvida em relacionamento com a própria classe
05/10/2013 12:05
0
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


Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto