Boa tarde pessoal,
Eu tenho uma aplicação Faces+Hibernate que ja estava rodando a dias normalmente.
Recentemente atualizei o Java e o Eclipse para sua ultima versão, e partir de então começou a dar erro de batch update em todas as transações do método saveOrUpdate em meu DAO Genérico.
O que está acontecendo eu já descobri e é muito simples: o atributo Id (Long) do Bean está pegando um valor 0 (zero), por isso ele faz update ao invés de insert e causa uma Exception é claro, pois o id 0 não existe.
O problema está em descobrir, por que de uma hora para outra isso começou a acontecer em um projeto que ja vinha funcionando a 3 meses.
Segue o código:
Bean
@Entity
@Table(name="inputpro")
@SequenceGenerator(name="inputpros",sequenceName="inputproseq")
public class InputPro implements Serializable {
private static final long serialVersionUID = 3932083434235408289L;
@Id @GeneratedValue(strategy=GenerationType.AUTO, generator="inputpros")
private Long id;
private String description;
...
DAO
public void Save(T t){
session.beginTransaction();
session.saveOrUpdate(t);
session.getTransaction().commit();
session.clear();
}
MB
public void saveInputPro() {
new DAO<InputPro>(InputPro.class, SessionPool.getCurrentSessionMeu()).Save(inputPro);
inputPro = new InputPro();
...
Como vocês podem ver, um código simples sem nada de mais…
Abraços a todos!