今天写了一个程序:
[size=large]
发现出错了,我把sql语句复制到SQLyog里面运行没有问题,
但程序错了,错误提示为:[/size]
[size=large]
我删去别名project,就好了,看来在update语句里面是不能使用别名的。
[/size]
[size=x-large] [color=red]不知道各位大哥有没有遇到这种情况。恳请研究过源码的大哥帮我解释一下,我感觉按照它的提示信息,它应该是发现update之后,后面必须是set,负责则出错[/color]。[/size]
getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session
.createQuery("update Project project set project.seq=? where project.id=?");
query.setInteger(0, seq);
query.setInteger(1, id);
return query.executeUpdate();
}
});
[size=large]
发现出错了,我把sql语句复制到SQLyog里面运行没有问题,
但程序错了,错误提示为:[/size]
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.hibernate3.HibernateQueryException: expecting "set", found 'project' near line 1, column 17 [update Project project set project.seq=? where project.id=?]; nested exception is org.hibernate.hql.ast.QuerySyntaxError: expecting "set", found 'dishSort' near line 1, column 17 [update Project project set project.seq=? where project.id=?]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:408)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:360)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
[size=large]
我删去别名project,就好了,看来在update语句里面是不能使用别名的。
[/size]
getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session
.createQuery("update Projectsetseq=? where id=?");
query.setInteger(0, seq);
query.setInteger(1, id);
return query.executeUpdate();
}
});
[size=x-large] [color=red]不知道各位大哥有没有遇到这种情况。恳请研究过源码的大哥帮我解释一下,我感觉按照它的提示信息,它应该是发现update之后,后面必须是set,负责则出错[/color]。[/size]