如果我要修改文章的分类,把在A类的文章移动到B类,怎么写?我是这样写的但是报主外键错误update Article as a set a.articleClass.classId=:newClassId where a.articleClass.classId=:classIdArticle 是文章articleClass是文章的分类
articleClass.classId是分类的ID

解决方案 »

  1.   

    我理解是分两步:
    1.获得这个Article对象实例 a
    2.获得当前文章的分类实例:ArticleClass class = a.getArticleClass();
    3.设置class.setArticleClass(newClassId);
    4.class.save();
    5.a.save(); //跟你配置ArticleClass与Article关联关系有关,双向or单项。
      

  2.   

    不是很明白你的。不过如果是我做的话,我会这样子做。当你添加了文章的时候,一开始你自己觉得放在A类好。就放在了A类里。过了几天后,你觉得,这篇文章怎么可以放在A类里,应该放在B类里。那这样子就得修改了。下面我就说一下我是怎么样子来做。当你添加文章的时候(文章分类表【articleClass】跟发表文章表【article】是一对多的关系,即一个分类,可以有多篇文章),在你【article】这个表里你应该存储的是【articleClass】的ID。当你修改的时候,你也就是修改这个【articleClass】的ID就可以了。
    也就是,当你在修改的时候,你肯定会有一个选择分类的。当你选择了B类后,它会有一个ID(假如A类的ID为1,B类的ID为2)。那也就是说,选择B类后,在保存的时候,就会把【article】表里存储articleClass里的id改为2.这样子就可以了。在修改的时候,你根据【article】的ID去修改articleClass id。Artilce article=new Article();
    article.setarticleclassid(articleclassid);你应该也有一个DAO的方法吧!你要在ArticleDAO这个类里定义一个update的方法。ArticleDAO adao=new ArticleDAO();
    adao.update(artilce);
      

  3.   


    大致方向是对的,不过我这修改的不是一篇文章,是把一个分类下的文章整个换一个分类,当然也就是修改classId,所以我就用了HQL,可是那么写会爆错误。是这样的,实际应用中删除了一个分类,但是里面有文章,我想做到在删除这个分类的时候,把这些文章的分类改成父类别里,然后删除这个分类。
      

  4.   

    update Article as a set a.articleClass = ? where a.articleId = ?
    setParameter(1, articleClass).setParameter(2);//articleClass是对象
    hiberbate是面向对象的操作,直接操作对象就ok啦