【问题标题】:How to delete selected row of jTable in database using Hibernate?如何使用 Hibernate 删除数据库中选定的 jTable 行?
【发布时间】:2016-08-28 18:04:47
【问题描述】:

这就是我将物品放入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.Kategorija#20]

【问题讨论】:

    标签: java mysql swing hibernate


    【解决方案1】:

    尝试代替代码

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

    尝试使用检索对象而不是创建新的类别

    Kategorija kat = sesija.get(Kategorija.class, id)
    sesija.delete(kat);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2017-09-28
      • 2013-07-24
      • 2015-02-11
      相关资源
      最近更新 更多