1

我使用 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。

4

0 回答 0