在Dao层拼接语句报错——数据库:sqlserver2008R2,whth pro as(select...很长就不写了),
这个跑断点测试一切正常,复制到数据库可以运行,但是在Dao层用父类封装的方法就会报错,
报错抛出的异常显示的语句被改变了,也搞不懂什么情况
没图没源码没真相说个P
看看封装的方法是怎么写的,貌似这个是你不会用人家封装好的方法,问问项目组的同事就ok了
public List findBySQL(final String sql, Page page)
throws SqlException
{
try
{
Integer totalCount = Integer.valueOf(countBySQL(DAOUtils.convertToCountSql(sql)));
page.setTotalCount(totalCount);
final int start = page.getFirstResult();
final int pageSize = page.getPageSize().intValue();
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session)
throws HibernateException, SQLException
{
Query query = session.createSQLQuery(sql);
List list = query.setFirstResult(start).setMaxResults(pageSize).list();
query.setFirstResult(start).setMaxResults(0);
releaseSession(session);
return list;
}
final BaseDAO this$0;
private final String val$sql;
private final int val$start;
private final int val$pageSize;
{
this$0 = BaseDAO.this;
sql = s;
start = i;
pageSize = j;
super();
}
}
);
}
catch(Exception e)
{
throw new SqlException(e.toString());
}
}
你的SQL 语句呢。
其实吧 , 因为page内部存在select count(*)的方法,而我用with as这样就会导致select count(*)运行不出来,方法是这样封装的,无解,所以,其实我想问的是大神们都是怎么用with as来优化SQL的,毕竟那东西我真不熟。