Olá pessoal, tenha uma classe com o Id definido da seguinte forma:
...
@Id
@GenericGenerator(name="pk", strategy="increment")
@GeneratedValue(generator="pk")
@Column(name="TIPPES_CODIGO")
@Rotulo(valor="Código")
private int id;
...
Bom, ele funciona muito bem. Gera valores para a chave primária, etc. Mas eu gostaria de saber se existe como eu obter o valor da chave primária que foi gerada. Utilizando esse autoIncrement pelo que me parece ele apenas da um select max + 1. Pelo menos é assim que funciona o nativo do Hibernate. Mas dessa forma aí ele não seta o valor no meu objeto.
Ou seja, eu mando salvar. No banco vai estar gerado o valor da chave certinho como deveria, mas quando eu mostro meu objeto na view, o código está zerado.
No caso estou utilizando JPA com Hibernate. Para persistir uso o método merge().
Um detalhe é que usando os métodos nativos do hibernate com a session dele, o valor da chave é setada normalmente dentro do meu objeto. Para resolver temporariamente criei um método que obtem o maior + 1 id da tabela, e uso momentos antes de salvar, mas não me parece uma solução muito elegante, até mesmo por problemas de concorrência, que aparentemente já foi tratado dentro do método do hibernate.
Alguma luz?