Como mapear uma tabela que sua PK é uma FK?
28/10/2011 04:53
0
Como mapear uma tabela que sua PK é uma FK?

ex.
Tabela Pessoas.
idPessoa (PK)
Nome

Tabela Usuarios.
idPessoa (PK)(FK)
login
senha

como fica o mapeamento do ID da Tabela Usuarios?




Classe de Dominio Usuario:

package usuario;

class Usuario implements Serializable {

String login;
String senha;
Pessoa pessoa

static constraints = {
login(maxsize:20,nullable:false,blank:false)
senha(maxsize:20,nullable:false,blank:false)
pessoa(nullable:false,blank:false)
}

static mapping = {
table name:'USUARIOS'
version false
id name:'pessoa', column:'idPessoa', generator:'assigned'
login column:'login'
senha column:'senha'
pessoa column:'idPessoa'
}

}
Tags: d


0
Faria da seguinte maneira:
--- Pessoa ---

package grailsjson
class Pessoa {

String nome

static mapping = {
table 'PESSOAS'
version false
nome column:'NOME'
id column:'idPessoa'
}

static constraints = {
}
}

--- Usuário ---

package grailsjson
class Usuario implements Serializable {

Pessoa pessoa
String login
String senha

static mapping = {
table 'USUARIOS'
version false
pessoa column:'idPessoa'
login column:'login'
senha column:'senha'
id composite:['pessoa']
}

static constraints = {
}
}


Fiz o teste no grails console e deu certo:

import grailsjson.Pessoa
import grailsjson.Usuario

def p1 = new Pessoa(nome:'Eduardo')
p1.save()
def user = new Usuario(pessoa:p1, login:'edu', senha:'123')
user.save()

user.each({
println(it)
})
28/10/2011 12:11


0
Aproveitando. Seria recomendável se eu colocasse o domínio Usuario estendendo de Pessoa?
28/10/2011 18:42



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