Pessoal,
Na classe ProdutoDAO que extende de GenericDAO, o método salvarOuAtualizar é chamado mas de lá não passa. Vejamos como estão as classes:
[code]public class GenericDAO<T extends Serializable> {
private Session sessao;
private final Class<T> classePersistente;
public GenericDAO() {
this.sessao = HibernateUtil.getSession();
this.classePersistente = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
public Session getSessao() {
return sessao;
}
…
protected void salvarOuAtualizar(T entity) {
System.out.println(“GenericDAO salvar/atualizar”);
try {
System.out.println(“GenericDAO try begin”);
this.sessao.beginTransaction().begin();
this.sessao.saveOrUpdate(entity);
System.out.println(“GenericDAO try antes do commit”);
this.sessao.getTransaction().commit();
System.out.println(“GenericDAO try depois do commit”);
} catch (Throwable t) {
System.out.println(“GenericDAO rollback”);
this.sessao.getTransaction().rollback();
t.printStackTrace();
} finally {
System.out.println(“GenericDAO antes de fechar sessao”);
fecharSessao();
}
}
…
public void fecharSessao() {
System.out.println("fechando");
if (this.sessao != null && this.sessao.isOpen()) {
System.out.println("fechou");
this.sessao.close();
}else{
System.out.println("nao fechou");
}
}
}[/code]
[code]public class ProdutoDAO extends GenericDAO<Produto> {
@Override
public void salvarOuAtualizar(Produto produto){
System.out.println("Salvando/atualizando produto...");
salvarOuAtualizar(produto);
System.out.println("Produto salvo/atualizado");
}
…
}
[/code]
public class ProdutoController {
...
public void salvarOuAtualizar(Produto produto) throws SQLException {
new ProdutoDAO().salvarOuAtualizar(produto);
}
...
}
A chamada do ProdutoController está nesta classe:
[code]public class Sincronismo_recebimento_produtos extends SwingWorker<DefaultTableModel, Object[]> {
private Session sessao;
…
// sessao = HibernateUtil.getSession();
// sessao.beginTransaction().begin();
ProdutoController pc = new ProdutoController();
…
for (int i = 0; i < qtdRegistros; i++) {
this.modelo.setValueAt("Recebendo produto "+ String.valueOf((i + 1) + " de " + qtdRegistros), linhas - 1, 2);
Produto produto = new Produto();
produto.setCod_produto_portal(resultProdutos.getSTRUCTPROD().get(i).getCCODPORTAL());
produto.setCod_produto_sistema(resultProdutos.getSTRUCTPROD().get(i).getCCODSISTEMA());
produto.setCodigo_barra_embalagem(resultProdutos.getSTRUCTPROD().get(i).getCCODBAREMB());
produto.setCodigo_barra_unidade(resultProdutos.getSTRUCTPROD().get(i).getCCODBARUNIT());
produto.setDescricao(resultProdutos.getSTRUCTPROD().get(i).getCDESCRICAO());
produto.setDisponivel_venda(resultProdutos.getSTRUCTPROD().get(i).getCDISPVENDA());
// sessao.saveOrUpdate(produto);
pc.salvarOuAtualizar(produto);
}
// sessao.getTransaction().commit();
// sessao.close();
…
}
[/code]
Para vocês terem idéia, em Sincronismo_recebimento_produtos o trecho comentado funcionava beleza. Comentei ele para testar o ProdutoController e provar que está ocorrendo a gravação/atualização com sucesso.
No console surge repetidas vezes Salvando produto…, ponto no qual o aplicativo pára. Nem aparece no console a mensagem System.out.println("GenericDAO salvar/atualizar"); incluída no GenericDAO.
Onde deve estar o problema? Erro algum surge no console!