Eu tenho um mapeamento no Hibernate de um relacionamento 1:N. Até ai blz.
O problema é que quando eu faço um select, ele roda normal, mas na hora do insert, ele tá dando um erro como se não estivesse captando a id.
Não sei se fui claro, deixa eu imprimir o stack trace aqui para vocês verem.
Alguém sabe ai o que pode ter ocorrido?
Sei que o problema é que o campo PERCODIGO não está sendo visto no insert. Alguém pode me dar uma ajuda… qualquer coisa será muitíssimo bem vindo.
Uma sugestão: troque o tipo long primitivo pela classe correspondente, coloque no construtor todos os atributos e serialize a classe.
Blz, farei isso… mas só de antemão… pode me explicar pq serializar? Não estou muito a par do que a classe serialize faz
Vlw pelo help… vou testar!
---- editando
O código SQL gerado pelo Hibernate… veja que falta o campo PERCODIGO na inserção…
P
paulojrpb
Ou rpaz… continua dando o mesmo problema!
Aceito qualquer sugestão… obg!
ze_kiefa
Vamos lá de novo!
Serializar uma classe significa guardar o estado dela.
Grosseiramente falando, quando a classe é instanciada com certos valores, a serialização permite guardar este recém-objeto em um meio físico (um arquivo por exemplo). Dessa maneira você não perde as informações dele e dispensa criar um outro objeto igual a este (fui claro?).
Através da serialização é que a persistência ocorre (Hibernate, Java 5, EJB 3 e por aí vai).
Lendo mais atentamente o erro do stack, percebi que o erro ocorre durante a inserção das portas (um Perfil possui várias Portas), como você tinha comentado anteriormente.
Segue uma sugestão da configuração da classe Porta.
faça a tentativa.
P
paulojrpb
Caro ze_kiefa…
muito boa suas dicas… creio que entendi o serialize. Muito legal…
Segui suas dicas… antes de vc me responder já havia colocado o no mapeamento para Porta. Então coloquei inverse=true no map para Perfil.
Fiz conforme vc me falou, porém agora ele só insere o perfil… não insere mais as portas, aliás… nem tenta inserir pelo sql gerado pelo próprio hibernate.
Atuais
Perfil.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mappingpackage="br.com.rastreautos.sis"><classname="Perfil"table="perfis"><idcolumn="PERCODIGO"name="codigo"><generatorclass="increment"/></id><propertyname="nome"column="PERNOME"/><setname="portas"inverse="true"lazy="false"><keycolumn="PERCODIGO"/><one-to-manyclass="Porta"/></set></class></hibernate-mapping>
Desde já agradeço o apoio até agora… por favor não pare.
Hehehe…
ze_kiefa
Um apequena alteração.
Repare nos dois novos atributos: insert e update na tag set.
P
paulojrpb
Ou rapaz, voltamos ao mesmo erro de anteriormente…
mas agora informando que a coluna PERCODIGO não pode ser nula… quando o campo PERCODIGO deveria ser inserido automaticamente pelo Hibernate… listagem do servlet que executa o cadastro…