我使用 SqlServer FREETEXTTABLE 在视图上搜索一些产品,传递 3 个参数,要搜索的字符串,要返回的第一行和要返回的最后一行(通常的分页)。
代码如下:
public List searchProducto(final String claves,final Integer pagina, final Integer nroFilas) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String sql = "SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY RANK DESC) AS RowNr, * FROM vista_web_productos AS vwp INNER JOIN FREETEXTTABLE( producto,clave,:name) as ftt ON ftt.[KEY]=vwp.id_web) t WHERE RowNr BETWEEN :inicio AND :fin";
SQLQuery query = (SQLQuery) session.createSQLQuery(sql);
query.addEntity(VistaWebProductoVO.class).setString("name",claves).setInteger("inicio", ((pagina - 1) * nroFilas)+1 ).setInteger("fin", ((pagina) * nroFilas) );
List list = query.list();
return list;
}
});
}
当我测试代码时,有时它可以工作(通常第一次工作正常并且它们),有时它不工作。特别是如果我调试我的测试并且我没有立即按下继续按钮(f5)它只是不起作用。关于问题原因的任何想法?我也在使用 Spring 3。