2016-08-28 5 views
1

これは私がjTableにアイテムを得た方法である:Hibernateを使ってデータベース内のjTableの選択行を削除するには?

public void fillKategorija(){ 
     Session sesija = HibernateUtil.getSession(); 
     Transaction tx = null; 
     tx = sesija.beginTransaction(); 
     List kategorije = sesija.createQuery("from Kategorija").list(); 
     tx.commit(); 
     DefaultTableModel tablemodel = (DefaultTableModel)jTable1.getModel(); 
     for(Iterator iterator = kategorije.iterator();iterator.hasNext();){ 
      Kategorija kat = (Kategorija)iterator.next(); 
      tablemodel.addRow(new Object[]{ 
      kat.getId(),kat.getNaziv(),kat.getOpis() 
      }); 
     } 
} 

、これは私がデータベースから選択した行を削除しようとした方法である:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
     int red = jTable1.getSelectedRow(); 
     DefaultTableModel dtm = (DefaultTableModel)jTable1.getModel(); 
     int id = Integer.parseInt(dtm.getValueAt(red, 0).toString()); 
     Session sesija = HibernateUtil.getSession(); 
     Transaction tx = null; 
     tx = sesija.beginTransaction(); 
     Kategorija kat = new Kategorija(); 
     kat.setId(id); 
     sesija.delete(kat); 
     tx.commit(); 
    }  

と私はこのエラーを取得

スレッド "AWT-EventQueue-0"の例外org.hibernate.NonUniqueObjectException:同じ識別子値を持つ別のオブジェクトが既にセッションに関連付けられていました:[model.Kategor日本陸軍#20]

答えて

0

Kategorija kat = new Kategorija(); 
kat.setId(id); 
sesija.delete(kat); 

は、オブジェクトを取得するのではなく、新たなKategorija

Kategorija kat = sesija.get(Kategorija.class, id) 
sesija.delete(kat); 
を作成し使用しようとするコードの代わりに試してみてください
関連する問題