我数据库用的是mysql,在orderInfo(工单信息表)中有一个managerId字段关联着manager(用户表)中的主键managerId列,
在生成的hibernate中,orderInfo.java文件中生成的对应字段是Manager manager;
如果我要修改这一列的值应该怎么写呢?
请高手们帮帮忙。。!
在生成的hibernate中,orderInfo.java文件中生成的对应字段是Manager manager;
如果我要修改这一列的值应该怎么写呢?
请高手们帮帮忙。。!
付值给manager的属性...然后把这个manager Set给managerId
或者.查询出一个Manager 并把它Set给managerId
public String managerGetOrder(int orderId,String nowdate , Manager manager){
String sql = "update Orderinfo set orderState = 1 ,getOrderDate = :nowdate,managerId = :managerId where orderId = :orderId";
Query obj = getSession().createQuery(sql);
obj.setParameter("nowdate", nowdate);
obj.setParameter("managerId", manager);
obj.setParameter("orderId",orderId);
System.out.println(obj.getQueryString());
return obj.iterate().next().toString();
}我的方法是这么写的,但是报错org.hibernate.HibernateException: Not supported for DML operations
at org.hibernate.hql.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:258)
at org.hibernate.hql.ast.QueryTranslatorImpl.iterate(QueryTranslatorImpl.java:317)
at org.hibernate.engine.query.HQLQueryPlan.performIterate(HQLQueryPlan.java:177)
at org.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1156)
at org.hibernate.impl.QueryImpl.iterate(QueryImpl.java:46)
at com.hpxx.hibernate.OrderinfoDAO.managerGetOrder(OrderinfoDAO.java:111)
at com.hpxx.struts.action.update.ManagerGetOrderAction.execute(ManagerGetOrderAction.java:37)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.hpxx.filter.EncodingFilter.doFilter(EncodingFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)就是不知道错在哪里
改成:
String sql = "update Orderinfo set orderState = 1 ,getOrderDate = :nowdate,manager.managerId = :managerId where orderId = :orderId";
就可以了,你要一层一层找!