java.lang.IllegalArgumentException:尝试使用null实体创建delete事件

时间:2014-03-30 10:21:29

标签: java hibernate

无法从数据库中删除/更新项目。尝试删除项目时会出现此异常 此表单从MainCategory类获取一个组合框值,并具有MainCtegory.Is的外键,这是不允许删除/更新的原因。

package com.auction management.entity;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;

@Entity

@Table(name = "SubCategory")

public class SubCategory {

    @Id
    @Column(name = "usbId",nullable = false,unique = true)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int subid;

    @Column(name = "subName")
    private String subName;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id",nullable = false)
   private MainCategory mainCategory;

    public MainCategory getMainCategory() {
        return mainCategory;
    }

    public void setMainCategory(MainCategory mainCategory) {
        this.mainCategory = mainCategory;
    }



    public SubCategory() {
    }

    public int getSubid() {
        return subid;
    }

    public void setSubid(int subid) {
        this.subid = subid;
    }

    public String getSubName() {
        return subName;
    }

    public void setSubName(String subName) {
        this.subName = subName;
    }


}




 public static boolean deleteSubCategory(int id){

        boolean status=false;
        Session session=HibernateUtil.getSessionFactory().openSession();
        Transaction transaction=null;

        try {
            transaction=session.beginTransaction();
          SubCategory subcategory=(SubCategory)session.get(SubCategory.class,id);
            session.delete(subcategory);
            transaction.commit();
            status=true;

        } catch (Exception e) {
            e.printStackTrace();
            transaction.rollback();
            status=false;
        }
        finally{
            session.close();
        }
        return  status;
    }





 private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) 
{ 

   boolean b=SubCategoryDao.deleteSubCategory(id);

        if(b)
        {
            JOptionPane.showMessageDialog(this,"Type Deleted Successfully");
               Category=SubCategoryDao.getAllCategories();
               fillTable();
               clear();
        }else
        {
            JOptionPane.showMessageDialog(this,"Not Delete");
        }
}




private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {                                          
        String name=txtSubCategory.getText();

        SubCategory scategory=new SubCategory();

        scategory.setSubName(name);
        scategory.setSubid(id);

        SubCategoryDao.updateSubCategory(scategory);
        Category=SubCategoryDao.getAllCategories();
        fillTable();
        clear();
    }  

1 个答案:

答案 0 :(得分:0)

这一行可能会产生一个null: SubCategory subcategory =(SubCategory)session.get(SubCategory.class,id);

删除时给出异常: 使用Session.delete(子类别);