Boa noite!
Estou com problema para recuperar a chave gerada por um sequence generator usando o hibernate.
Fiz o mapeamento de entidades com anotações jpa.
Quando faço a persistência com session factory a chave gerada não tem nada a ver com a gerada no banco, porém quando faço a persistencia com um entity manager a entidade que persisti é atualizada com o valor de chave gerado.
Alguém já passou por esse problema? Se sim qual a solução?
posta seu código ai…
Entidade:
@Entity(name="CLIENTE")
@Table(name="TB_CLIENTE")
@SequenceGenerator(name="CLIENTE_SEQ",sequenceName="TB_CLIENTE_SEQ",allocationSize=20)
public class Cliente {
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="CLIENTE_SEQ")
@Id
@Column(name="codigo")
private Integer codigo;
@Column(name="nome")
private String nome;
@Column(name="idade")
private Integer idade;
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getIdade() {
return idade;
}
public void setIdade(Integer idade) {
this.idade = idade;
}
}
E na hora de persistir
public T inserir(T entidade) {
sessionFactory.getCurrentSession().persist(entidade);
return entidade;
}
Tanto com save quanto persist geram um id que não confere com o id gerado pelo banco, agora caso eu utilize um EntityManager a chave é gerada corretamente.