Mapeamento one-to-many
17/03/2009 00:00
0
Olá pessoal tudo bem.
Estou com um probleminha chato tenho uma tabela UFS e outra CIDADES em meu banco de dados que são criadas pelo grails. o problema está em uma chave estrangeira que o grails cria na tabela cidades fazendo referencia pra ela mesma(auto relacionamento) como fazer pra que ele nao gere esse campo na tabela ?

Veja como q fica as tabelas abaixo...

o problema tá neste campo cidade_id fazendo referencia a id

CREATE TABLE ufs
(
id integer NOT NULL,
nome character varying(255) NOT NULL,
sigla character varying(255) NOT NULL,
CONSTRAINT ufs_pkey PRIMARY KEY (id)
)

CREATE TABLE cidades
(
id integer NOT NULL,
nome character varying(255) NOT NULL,
uf_id integer NOT NULL,
cidade_id integer,
CONSTRAINT cidades_pkey PRIMARY KEY (id),
CONSTRAINT fk2de48dcf6a0983a FOREIGN KEY (uf_id)
REFERENCES ufs (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk2de48dcfbf435b5a FOREIGN KEY (cidade_id)
REFERENCES cidades (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);


Obrigado.
Tags: Grails


0
Você poderia colocar os atributos de relacionamento contidos nessas classes de domínio??
17/03/2009 00:00


0
Isso é algum atributo de relacionamento, pelo que eu entendi uma cidade tem uma auto-referência, isso é alguma idéia de capital. Bom, para não só ficarmos conjecturando, faça o que eu recomendei no tópico acima.
17/03/2009 00:00


0
[quote="Horus Shadow"]Você poderia colocar os atributos de relacionamento contidos nessas classes de domínio??[/quote]

Olá claro que sim veja o codigo abaixo, UF - > Cidade



class Uf {
static hasMany=[cidades:Cidade]

int id
String nome
String sigla

static constraints = {
}
static mapping={
table 'ufs'
version false
cidades column :'uf_id',joinTable:'cidades'

}
}


class Cidade {
int id
int uf_id
String nome
static belongsTo = Uf

static constraints = {
}
static mapping={
table 'cidades'
version false
id column:'id'
}
}



Obrigado.
17/03/2009 00:00


0
Você está usando a estratégia de "já possuo uma base de dados", mas pelo que vi você não especificou todos os campos, tenho uma pergunta:

1 - A base de dados foi gerada pela aplicação?

E pelo que vi no manual você tem que especificar os campos da tabela que devem corresponder com os atributos da sua classe.


class Person {
static hasMany = [nicknames:String]

static mapping = { hasMany joinTable:[name:'bunch_o_nicknames', key:'person_id', column:'nickname', type:"text"] } }
18/03/2009 00:00


0
Sim o banco está sendo gerado pela aplicação...
18/03/2009 00:00


0
Cara, você já tentou tirar os campos static mapping e gerar o banco, ou tente criar o banco manualmente e acessá-lo pela aplicação, ou faça como eu recomendei:

class Person {
static hasMany = [nicknames:String]

static mapping = { hasMany joinTable:[name:'bunch_o_nicknames', key:'person_id', column:'nickname', type:"text"] } }


Ou seja, especificar todos os campos da tabela, poste aqui quando obtiver algum resultado.
18/03/2009 00:00


0
Olá tudo bem...
Agora está gerando 3 tabelas e não tem o relacionamento UF - >Cidade

Agora o relacionamento ficou UF -> ufs_cidade <- Cidade


CREATE TABLE cidades
(
id integer NOT NULL,
nome character varying(255) NOT NULL,
uf_id integer NOT NULL,
CONSTRAINT cidades_pkey PRIMARY KEY (id)
)

CREATE TABLE ufs
(
id integer NOT NULL,
nome character varying(255) NOT NULL,
sigla character varying(255) NOT NULL,
CONSTRAINT ufs_pkey PRIMARY KEY (id)
)

CREATE TABLE ufs_cidades
(
uf_cidades_id integer,
cidade_id integer,
CONSTRAINT fkb6fad692bf435b5a FOREIGN KEY (cidade_id)
REFERENCES cidades (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fkb6fad692eb9c1aaa FOREIGN KEY (uf_cidades_id)
REFERENCES ufs (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
19/03/2009 00:00


0
Acessa esse tópico e vê se t ajuda em alguma coisa:

http&#58;//grailsbrasil.com/viewtopic.php?t=515

Abraços
19/03/2009 00:00



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