Hibernate - Relacionamento @OneToOne  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
limaaq
JavaChild
[Avatar]
Membro desde: 08/02/2012 10:07:19
Mensagens: 137
Offline

Opa, beleza?

Pessoal, estou com um problema que não consegui resolver, procurei aqui mesmo no fórum e também em outros, e nada de dar certo.

O problema é o seguinte, estou fazendo um relacionamento entre duas tabelas, OneToOne, porém não estou obtendo sucesso.

Tendo o script do bd desta maneira:

CREATE TABLE pessoa (
pessoa_id int(11) NOT NULL auto_increment,
pessoa_nome varchar(20) default NULL,
pessoa_idade int(3) default NULL,
PRIMARY KEY (pessoa_id)
);

CREATE TABLE filho (
pessoa_id int(11) default NULL,
filho_nome varchar(20) default NULL,
filho_idade int(3) default NULL,
FOREIGN KEY (pessoa_id) REFERENCES pessoa(pessoa_id),
PRIMARY KEY (pessoa_id)
);

(Imaginando aqui, que uma pessoa só pode ter um filho e um filho só pode der uma pessoa, tipo controle de natalidade rs)
E pelo que entendi a tabela filho não pode ter sua própria primary key por causa do hibernate.

Aqui estão as duas entidades:

Pessoa



Filho
Aqui usei tanto @PrimaryKeyJoinColumn quanto @JoinColum e não funcionou.



Aqui a classe Teste:



O erro é o seguinte:


Alguém poderia me ajudar dando uma luz de onde estou cometendo o equivoco?
Valeu galera, desde já obrigado



faeldix
JavaTeenager

Membro desde: 19/01/2011 11:18:36
Mensagens: 161
Offline

a classe filho vai precisar de um chave primaria sim.. experimente criar a chave primaria separado da chave estrangeira!
limaaq
JavaChild
[Avatar]
Membro desde: 08/02/2012 10:07:19
Mensagens: 137
Offline

faeldix wrote:a classe filho vai precisar de um chave primaria sim.. experimente criar a chave primaria separado da chave estrangeira!


Fazendo a modificação, e deixando o script desta forma:

CREATE TABLE pessoa (
pessoa_id int(11) NOT NULL auto_increment,
pessoa_nome varchar(20) default NULL,
pessoa_idade int(3) default NULL,
PRIMARY KEY (pessoa_id)
);

CREATE TABLE filho (
filho_id int(11) NOT NULL auto_increment,
pessoa_id int(11) default NULL,
filho_nome varchar(20) default NULL,
filho_idade int(3) default NULL,
FOREIGN KEY (pessoa_id) REFERENCES pessoa(pessoa_id),
PRIMARY KEY (filho_id)
);


O erro permanece o mesmo



mais alguma dica? rs, mas mesmo assim obrigado ae!



faeldix
JavaTeenager

Membro desde: 19/01/2011 11:18:36
Mensagens: 161
Offline

nao precisa criar as tabelas.. deixa o hibernate criar.
limaaq
JavaChild
[Avatar]
Membro desde: 08/02/2012 10:07:19
Mensagens: 137
Offline

faeldix wrote:nao precisa criar as tabelas.. deixa o hibernate criar.

Estou no começo de Hibernate, mas fiz várias relacionamentos, tanto ManyToMany, OneToMany e sempre fui criando o banco pelo MySql.
Fui revendo o código parte a parte com a sugestão que você deu de o filho ter uma primary key, o programa acabou rodando, sem erros.
Porém no MySql o pessoa_id, presente na tabela Filho ficou NULL, não sei mais o que fazer rs.

Mas obrigado pelo ajuda cara



limaaq
JavaChild
[Avatar]
Membro desde: 08/02/2012 10:07:19
Mensagens: 137
Offline

Baaah,

tu tava certo, deixando o Hibernate criar a tabela deu certinho, rs.

Brigadão mesmo man!

Valeu pela paciência!



Furlani
JavaChild

Membro desde: 09/06/2010 13:22:37
Mensagens: 131
Offline

Eae blz??

Cara tenta fazer esse teste aqui




Depois deleta suas tabelas na base de dados e starta sua aplicação.. ele tem que criar as tabelas sozinho...

Mas o SCHEMA tem que estar criado...

Ve se funfa..

=]
limaaq
JavaChild
[Avatar]
Membro desde: 08/02/2012 10:07:19
Mensagens: 137
Offline

Fiz desse jeito mesmo, valeu também pela ajuda Furlani



 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team