Galera estou querendo usar o auto incremento do banco.
Deu uma olhada na documentação e cheguei no seguinte mapeamento da id:
<id name="codigo" type="int" unsaved-value="null">
<column name="cod_est" sql-type="int" not-null="true" />
</id>
unsaved-value=“null” --> para atribuir null quando o objeto é transiente e gravar no banco.
Tentei colocar a id do VO como Integer e dá esses paus:
Usando o sessio.saveOrUpdate(objeto);
-Ele só executa update.
-Não insere o objeto de forma alguma.
Erro:
HibernateException: net.sf.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
Usando o sessio.save(objeto);
HibernateException: net.sf.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
Usando o sessio.update(objeto) ele funciona legal;
Tentei usar a minha id do VO como int, só que quando tento salvar ela não considera o id como null e sim como o valor default do int (0);
Usando o sessio.save(objeto);
HibernateException: net.sf.hibernate.JDBCException: Could not synchronize database state with session: Entrada em lote 0 insert into estado (descricao, sigla, cod_est) values ( foi abortada. Chame getNextException() para ver a causa.
Ele tenta inserir um novo registro passando a id, dai o banco berra, pois além de estar com auto-incremento ele já tem um registro com id = 0.
Usando o sessio.saveOrUpdate(objeto) ao invés de incluir ele detecta um registro com a mesma id e faz update.
Usando o sessio.update(objeto) ele funciona legal;
Obs.: Estou testando a aplicação com Postgresql mas ela rodará também com Oracle.