ssh整合项目中,po对象不允许出DAO层,请问该如何在service层对数据进行更新
dao层接口:publicQuestionBeanquerybyid();(在实现类中将PO对象赋值给QuestionBean对象)Service层实现类:publicv...
dao层接口:public QuestionBean querybyid();(在实现类中将PO对象赋值给QuestionBean 对象)
Service层实现类:public void updateQuestionstatus(int qid,int status) {
QuestionBean questionbean=questiondao.getbyqidnoanswer(qid);
questionbean.setStatus(2);
questionbean.setClickcount(0);
questionbean.setContent("sa");
questiondao.update(questionbean); //在dao层再将bean对象赋给PO
}
将事物管理配置在service层
这里如上设置会出异常,org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session: [edu.usth.myznt.model.Question#11]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [edu.usth.myznt.model.Question#11]
菜鸟自学的,不知该如何解决这种问题
我想知道如何在po对象不出DAO层的前提下解决这种问题
//update方法
public void update(QuestionBean questionbean) {
Question question=new Question(questionbean.getQid(),questionbean.getTitle(), questionbean.getContent(), questionbean.getItemid(),
questionbean.getSubid(), questionbean.getUserid(), questionbean.getGrade(), questionbean.getOfferscore(),
questionbean.getStatus(),questionbean.getQuestiontime(),questionbean.getClickcount(),
questionbean.getAcceptflag(), questionbean.getCommenflag());
hibernateTemplate.update(question);
} 展开
Service层实现类:public void updateQuestionstatus(int qid,int status) {
QuestionBean questionbean=questiondao.getbyqidnoanswer(qid);
questionbean.setStatus(2);
questionbean.setClickcount(0);
questionbean.setContent("sa");
questiondao.update(questionbean); //在dao层再将bean对象赋给PO
}
将事物管理配置在service层
这里如上设置会出异常,org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session: [edu.usth.myznt.model.Question#11]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [edu.usth.myznt.model.Question#11]
菜鸟自学的,不知该如何解决这种问题
我想知道如何在po对象不出DAO层的前提下解决这种问题
//update方法
public void update(QuestionBean questionbean) {
Question question=new Question(questionbean.getQid(),questionbean.getTitle(), questionbean.getContent(), questionbean.getItemid(),
questionbean.getSubid(), questionbean.getUserid(), questionbean.getGrade(), questionbean.getOfferscore(),
questionbean.getStatus(),questionbean.getQuestiontime(),questionbean.getClickcount(),
questionbean.getAcceptflag(), questionbean.getCommenflag());
hibernateTemplate.update(question);
} 展开
2个回答
展开全部
hibernate报的错误是库里已经有一个id为11的question,你的操作并不是update,而是save了一个新的id重复的question
关键是要先正确获得现有的question,再set属性值.
具体怎么获取要看你们的类是怎么封装的了,反正上面没正确获取,导致最后update操作插了个新po
关键是要先正确获得现有的question,再set属性值.
具体怎么获取要看你们的类是怎么封装的了,反正上面没正确获取,导致最后update操作插了个新po
更多追问追答
追问
我把update方法发上来了,帮我看下,谢谢
还有如果不配置事物,数据是可以正常更新的
追答
这个update方法是公用的还是你写的?
new出来的对象再存入主键id是不能用来做更新操作的,你要用find或者load方法从数据库里得到现有的question对象才可以对它set值做更新
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询