jtable atualiza com dados repetidos
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.
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.
Silvinho
Curtidas 0
Respostas
Helio Pereira
22/02/2019
Posta os seus métodos da classe Dao.
GOSTEI 0
Silvinho
22/02/2019
minha classe dao:
minha classe da entidade:
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 + '}'; } }
GOSTEI 0