这个是建立的表
CREATE TABLE `article` (
`article_id` bigint(20) NOT NULL auto_increment,
`article_name` varchar(20) NOT NULL,
`article_desc` text NOT NULL,
`date_added` datetime default NULL,
PRIMARY KEY (`article_id`)

解决方案 »

  1.   

    sessionFactory.getCurrentSession()总是这样写不烦吗
    Session session = sessionFactory.getCurrentSession();然后直接操作session要更方便吧
      

  2.   

     sessionFactory.getCurrentSession().beginTransaction();开启事务了,下面是不是要提交事务,关闭,回调之类的操作呢
      

  3.   

    修改成这样了,还是无法删除?
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.getCurrentSession();
      Article article = (Article) session.load( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
    底下的console这样提示
    Hibernate: select article0_.article_id as article1_0_0_, article0_.date_added as date2_0_0_, article0_.article_desc as article3_0_0_, article0_.article_name as article4_0_0_ from article article0_ where article0_.article_id=?
    Hibernate: select this_.article_id as article1_0_0_, this_.date_added as date2_0_0_, this_.article_desc as article3_0_0_, this_.article_name as article4_0_0_ from article this_
      
      

  4.   

    修改成这样了,还是无法删除?
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.getCurrentSession();
      Article article = (Article) session.load( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
    底下的console这样提示
    Hibernate: select article0_.article_id as article1_0_0_, article0_.date_added as date2_0_0_, article0_.article_desc as article3_0_0_, article0_.article_name as article4_0_0_ from article article0_ where article0_.article_id=?
    Hibernate: select this_.article_id as article1_0_0_, this_.date_added as date2_0_0_, this_.article_desc as article3_0_0_, this_.article_name as article4_0_0_ from article this_
      

  5.   

    修改成这样了,还是无法删除?
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.getCurrentSession();
      Article article = (Article) session.load( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
    底下的console这样提示
    Hibernate: select article0_.article_id as article1_0_0_, article0_.date_added as date2_0_0_, article0_.article_desc as article3_0_0_, article0_.article_name as article4_0_0_ from article article0_ where article0_.article_id=?
    Hibernate: select this_.article_id as article1_0_0_, this_.date_added as date2_0_0_, this_.article_desc as article3_0_0_, this_.article_name as article4_0_0_ from article this_
      

  6.   

     public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.getCurrentSession();
      Transaction transaction = session.beginTransaction();
      Article article = (Article) session.load( Article.class,articleId);
          if (null != article) {
              session.delete(article);
          }
          transaction.commit();
          //session.close();这里不用关闭,通过sessionFactory.getCurrentSession();获取的session会自动关闭  }
      

  7.   

    if (null != article) {
              session.delete(article);
          }
    还有就是你这个article查到没有啊,if进去了没?
      

  8.   

    谢谢各路豪侠,改成这样ok了
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.openSession();
      Article article = (Article) session.get( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
      
      

  9.   

    进去了,
    我如下改就好了,也不知道为啥
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.openSession();
      Article article = (Article) session.get( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
      
      

  10.   

    这样改就好了,也不知道为啥
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.openSession();
      Article article = (Article) session.get( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
      
      

  11.   

    这样改就好了,也不知道为啥
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.openSession();
      Article article = (Article) session.get( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
      
    通过sessionFactory.getCurrentSession();这种方式获取session还需要别的配置你可能没有配,
         sessionFactory.getCurrentSession()与sessionFactory.openSession()的区别
      

  12.   

    问题非常好定位,你debug,看是否执行session.delete(article); Article article = (Article) session.load( Article.class,articleId);//加载一个持久化对象
      session.beginTransaction();//这个改为Transaction tx=session.beginTransaction();
          if (null != article) {
              session.delete(article);//删除对象
          }
          session.getTransaction().commit();//改为tx.commit();清理缓存,应该打印delete语句
          session.close();//从缓存中删article,也就是把持久化对象变为游离态
      

  13.   

    这样改就好了,也不知道为啥
      public void deleteArticle(Integer articleId){
      System.out.println("Dao-->"+articleId);
      Session session=sessionFactory.openSession();
      Article article = (Article) session.get( Article.class,articleId);
      session.beginTransaction();
          if (null != article) {
              session.delete(article);
          }
          session.getTransaction().commit();
          session.close();  }
      
    通过sessionFactory.getCurrentSession();这种方式获取session还需要别的配置你可能没有配,
         sessionFactory.getCurrentSession()与sessionFactory.openSession()的区别
    谢谢这位大神的认真回复!
      

  14.   

    Myeclipse下Hibernate3.3自动生成POJO,DAO后自己写service调试发现,删除时没报错但就是不删数据,照着上面回复的内容,在getSession().delete(persistentInstance);前后加了两句
    getSession().getTransaction().begin();getSession().getTransaction().commit();就可以删除了,谢谢