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