Série da semana: Primeiros passos no Angular

Veja mais

jtable atualiza com dados repetidos

22/02/2019

8

Tenho uma jtable que é atualizada apos gravar os dados, porem apos essa ação , os dados se apresentam repetidos. Já li algum form mas, não consegui resolver.
segue os códigos:
Esse é o metodo que preenche os dados na jtable:

<code>
public final void prencher() {

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy HH:mm");

DefaultTableModel modelo = (DefaultTableModel) jt.getModel();
jt.setModel(modelo);
jt.setRowSorter(new TableRowSorter(modelo));

jt.getColumnModel().getColumn(0).setPreferredWidth(100);
jt.getColumnModel().getColumn(0).setResizable(false);
jt.getColumnModel().getColumn(1).setPreferredWidth(50);
jt.getColumnModel().getColumn(1).setResizable(false);
jt.getColumnModel().getColumn(2).setPreferredWidth(100);
jt.getColumnModel().getColumn(2).setResizable(false);
jt.getColumnModel().getColumn(3).setPreferredWidth(100);
jt.getColumnModel().getColumn(3).setResizable(false);
jt.getColumnModel().getColumn(4).setPreferredWidth(100);
jt.getColumnModel().getColumn(4).setResizable(false);
jt.getTableHeader().setReorderingAllowed(false);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

List<Setor> lista_setor = new ArrayList();

try {

lista_setor = session.createQuery("from Setor").list();
int tamanho = lista_setor.size();
for (int i = 0; i < tamanho; i++) {

Setor setorr = lista_setor.get(i);

modelo.addRow(new Object[]{
setorr.getNome(), setorr.getStatus(), sdf.format(setorr.getDataCadastro()),
sdf1.format(setorr.getDataAlteracao()), setorr.getUsuarioAlteracao()});

}
} catch (Exception e) {
}
</code>

aqui é onde chamo esse metodo no botao gravar:
<code>
private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) {

if (descricao.getText() == null || descricao.getText().trim().equals("")) {
tremer();
DesktopNotify.showDesktopMessage("I N F O R M A Ç Ã O !", "Campo DESCRIÇÃO deve ser informado!!", DesktopNotify.ERROR, 4000);
descricao.requestFocus();
descricao.setBorder(new LineBorder(Color.RED));
} else {

try {
String pega = descricao.getText();
Criteria crit = session.createCriteria(Setor.class);
crit.add(Restrictions.eq("nome", pega));
List results = crit.list();

if (results.size()
> 0) {
JOptionPane.showMessageDialog(null, "Esse setor já existe cadastrado");

} else {

nn.setDataCadastro(new Date());
nn.setDataAlteracao(new Date());
nn.setNome(descricao.getText());
nn.setStatus((String) jb1.getSelectedItem());
dao.salvar(nn);
prencher();
JOptionPane.showMessageDialog(null, "Setor salvo com sucesso");

}
} catch (HibernateException | HeadlessException ex) {
JOptionPane.showMessageDialog(null, "Nem executou a pesquisa! \\n"
+ "contacte aequipe de TI!" + ex);
}

}

}
</code>
O problema é que apos gravar e atualizar os dados na jtable, os dados retornam duplicado na mesma, tipo, se já tem jose, e grava maria, ele retorna jose, jose, maria na jtable. Mas no banco nao está duplicado. Fico grato pela ajuda.
Responder

Posts

23/02/2019

Helio Pereira

Posta os seus métodos da classe Dao.
Responder

23/02/2019

Silvinho

minha classe dao:


public class setorDAO {

    Session session = HibernateUtil.getSessionFactory().openSession();
    

    public boolean salvar(Setor setor) {
        try {
            session.beginTransaction();
            session.save(setor);
            session.getTransaction().commit();

            return true;
        } catch (Exception e) {
            session.getTransaction().rollback();
            JOptionPane.showMessageDialog(null, "erro" + e.getMessage());
            return false;
        }

    }

    public boolean alterar(Setor setor) {

        try {

            session.beginTransaction();
            session.merge(setor);
            session.getTransaction().commit();
            return true;
        } catch (Exception e) {
            session.getTransaction().rollback();
            return false;

        }
    }

    public boolean excluir(Setor setor) {

        try {

            session.beginTransaction();
            session.delete(setor);
            session.getTransaction().commit();
            return true;
        } catch (Exception e) {
            session.getTransaction().rollback();
            return false;
        } finally {
            session.close();
        }
    }

    public Setor consultar(int id) {
        Setor retorno = new Setor();
        try {

            session.beginTransaction();
            retorno = (Setor) session.get(Setor.class, id);
            session.getTransaction().commit();
        } catch (Exception e) {
            session.getTransaction().rollback();
        } finally {
            session.close();
        }
        return retorno;
    }

    public Setor carregar(String hql) {
        return (Setor) this.session.createQuery(hql).setCacheable(true).uniqueResult();
    }

    @SuppressWarnings("unchecked")
    public List<Setor> listar() {
        List<Setor> lista = new ArrayList<>();
        try {
            session = (Session) HibernateUtil.getSessionFactory();
            session.beginTransaction();
            lista = (List<Setor>) session.createCriteria(Setor.class).list();
            session.getTransaction().commit();
        } catch (Exception e) {
            session.getTransaction().rollback();
        } finally {
            session.close();
        }
        return lista;
    }

    @SuppressWarnings("unchecked")
    public List<Setor> listar(Setor setor) {
        Criteria c = session.createCriteria(Setor.class);
        if (setor.getNome().length() > 0) {
            c.add(Restrictions.like("nome", setor.getNome() + "%"));
        }
        c.addOrder(Order.asc("nome"));
        return (List<Setor>) c.list();
    }


minha classe da entidade:

@Entity
@Table(name = "setor")
public class Setor implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "nome", length = 20, unique = true)
    private String nome;

    @Column(name = "status", length = 10)
    private String status;

    @Temporal(TemporalType.TIMESTAMP)
    private Date dataCadastro;

    @Temporal(TemporalType.TIMESTAMP)
    private Date dataAlteracao;

    private Long usuarioAlteracao;

    public String getNome() {
        return nome;
    }

    public Setor() {
    }

    public Setor(Long id, String nome, String status, Date dataCadastro, Date dataAlteracao, Long usuarioAlteracao) {
        this.id = id;
        this.nome = nome;
        this.status = status;
        this.dataCadastro = dataCadastro;
        this.dataAlteracao = dataAlteracao;
        this.usuarioAlteracao = usuarioAlteracao;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Date getDataAlteracao() {
        return dataAlteracao;
    }

    public void setDataAlteracao(Date dataAlteracao) {
        this.dataAlteracao = dataAlteracao;
    }

    public Long getUsuarioAlteracao() {
        return usuarioAlteracao;
    }

    public void setUsuarioAlteracao(Long usuarioAlteracao) {
        this.usuarioAlteracao = usuarioAlteracao;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    

    @Override
    public String toString() {
        return "Setor{" + "id=" + id + ", nome=" + nome + ", status=" + status + ", dataCadastro=" + dataCadastro + ", dataAlteracao=" + dataAlteracao + ", usuarioAlteracao=" + usuarioAlteracao + '}';
    }



}
Responder