org.hibernate.id.IdentifierGenerationException[RESOLVIDO]  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline



Pessoal sei que o erro diz que tenho que setar o id dessa entidade Uf manualmente porém eu tenho que setar esse objeto como null e no banco ele pode ser setado como null, mas na hora de salvar dar este erro, pq? Me ajudem por favor.

This message was edited 1 time. Last update was at 17/10/2011 11:19:37

alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

na hora de criar seu objeto nao tem problema seu id seja null, desde que no seu banco dua PK seja incrementada de alguma forma, por exemplo, sequnce, auto incremente.

t+

This message was edited 1 time. Last update was at 14/10/2011 15:28:11

evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Alisson deixa eu te explicar pra ver se vc me ajude, no BD minha tabela UF tem uma pk que se chama SG.
Eu tenho uma entidade que se chama AssociadoParticipante que possui essa foreing key SG que vem da tabela UF.
Porém na tabela AssociadoParticipante ela pode ser null e na hora de salvar da este erro, ou seja eu posso nao querer salvar uma UF quando for salvar um AssociadoParticipante entendeu?

O mapeamento esta assim

AssociadoParticipante:



UF:

This message was edited 1 time. Last update was at 14/10/2011 15:33:41

alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

ate ai blz, porem na sua Tabela UF, sua PK SG, tem que ter uma forma de auto incremento, verifica se vc colocou isso.
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Não tem nao a PK é a sigla da UF, exemplo "MG" - "SP" por ai vai.
Guilherme Gomes
Virtual Machine Man
[Avatar]

Membro desde: 25/06/2007 14:32:09
Mensagens: 686
Localização: São Paulo
Offline

O problema não está na AssociadoParticipante, está na propria UF.
O hibernate está tentando persistir a Uf, mas esta está com o id nulo. E como vc não mapeou o Id como valor gerado, então ele deve ser informado por você.

Se o problema está acontecendo quando vc insere o AssociadoParticipante, então ele deve estar fazendo um cascade pra inserir uma UF que está instanciada, mas com Id nulo. Dá uma olhada nisso.

-----------
Atenciosamente,
Guilherme V. F. Gomes.
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Eu pensei que fosse isso tb, porém eu seto o UF pra null antes de persistir =/
Guilherme Gomes
Virtual Machine Man
[Avatar]

Membro desde: 25/06/2007 14:32:09
Mensagens: 686
Localização: São Paulo
Offline

Posta a sua classe UF.
Se eu fosse apostar, diria que em algum momento vc está mandando salvar uma Uf, ou está fazendo isso via cascade.

-----------
Atenciosamente,
Guilherme V. F. Gomes.
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Então tem o cascade no AssociadoParticipante pra salvar a UF, mas ela pode ser null na tabela AssociadoParticipante:

Aqui esta UF:




AssociacaoParticipante



metodo para persisitir




nesse montaAssocPartic() eu seto uf pra null
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Alguem me ajuda?
Guilherme Gomes
Virtual Machine Man
[Avatar]

Membro desde: 25/06/2007 14:32:09
Mensagens: 686
Localização: São Paulo
Offline

Confere no metodo insere(), se o this.participante.getUf() está realmente null. Imagino que esteja alguma UF lixo ali...

-----------
Atenciosamente,
Guilherme V. F. Gomes.
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Guilherme ja conferi =/, veja so na imagem em anexo.

O unico objeto que tem UF tb nessa aplicaçao e Municipio porem Municipio tb esta null =/
[Thumb - uf.JPG]
 Nome do arquivo uf.JPG [Disk] Download
 Descrição
 Tamanho 127 Kbytes
 Baixado:  11 vez(es)

Guilherme Gomes
Virtual Machine Man
[Avatar]

Membro desde: 25/06/2007 14:32:09
Mensagens: 686
Localização: São Paulo
Offline

Achei o problema ^^ Tava na nossa cara o tempo todo!



O Hibernate ta usando o getUf() que está criando uma UF na hora ali e ele tenta salvar. Logo, erro...

-----------
Atenciosamente,
Guilherme V. F. Gomes.
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

Pouts Guilherme é isso mesmo, mas pq o erro? Sendo que eu seto pra null? O hibernate sempre vai usar meus métodos getters e setters ou so esta usando pq fiz o mapeamento em cima deles?
Guilherme Gomes
Virtual Machine Man
[Avatar]

Membro desde: 25/06/2007 14:32:09
Mensagens: 686
Localização: São Paulo
Offline

Mesmo se você tivesse anotado a propriedade, o Hibernate vai pegar o valor dela através do método, principalmente por que (boas praticas dizem) sua propriedade será privada e o Hibernate não conseguirá receber o valor da variável (mesmo via Reflection), a não ser pelo getter dela.

Outro motivo disso é que o Hibernate permite que você tenha regras dentro do getter (o motivo de ser boa prática usar getters/setters) que sejam executadas antes de inserir o registro em banco de dados (ou de ser utilizado por qualquer outra coisa).

Então, não recomendo fazer esse tipo de inicialização. Se for pra evitar NPE em outros pontos do código, utilize um IF sempre que necessário.

Acho que respondi ^^

-----------
Atenciosamente,
Guilherme V. F. Gomes.
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team