Hi

I'm working on an application with Spring MVC and Annotations MyBatis. It turns out that I am using the annotation @ Selectprovider to create a dynamic query, but it pulls a empty error. I need help.
The source code is as follows:

Code:
import static org.apache.ibatis.jdbc.SelectBuilder.*;

public class SqlBuilderNecesidadCompra {

	public static String selectByParameters(){
		
		
		SELECT("CDNECESIDADCOMPRA, NMCEDULARESPONSABLE, CDESTADONECESIDAD, FEANULACIONAPROBACION," +
				"FECREACION, FEMODIFICACION, DSOBSERVACION, CDUSUARIOANULAAPRUEBA, CDUSUARIOCREACION, CDUSUARIOMODIFICACION, DSOBSERVACIONANULACION ");
		FROM("COM_NECESIDADESCOMPRAS");
		
		
		return SQL();
	}
	
}
************************************************** **************


Code:
public interface NecesidadCompraDAO {
	String SELECT_BY_PK="SELECT CDNECESIDADCOMPRA, NMCEDULARESPONSABLE, CDESTADONECESIDAD, FEANULACIONAPROBACION," +
		"FECREACION, FEMODIFICACION, DSOBSERVACION, CDUSUARIOANULAAPRUEBA, CDUSUARIOCREACION, CDUSUARIOMODIFICACION, DSOBSERVACIONANULACION " +
		"FROM COM_NECESIDADESCOMPRAS WHERE CDNECESIDADCOMPRA=#{consecutivo}";
	
	String SELECTE_ALL_NECESIDADCOMPRA="SELECT CDNECESIDADCOMPRA, NMCEDULARESPONSABLE, CDESTADONECESIDAD, FEANULACIONAPROBACION," +
			"FECREACION, FEMODIFICACION, DSOBSERVACION, CDUSUARIOANULAAPRUEBA, CDUSUARIOCREACION, CDUSUARIOMODIFICACION, DSOBSERVACIONANULACION " +
			"FROM COM_NECESIDADESCOMPRAS ORDER BY ${orderBy} LIMIT ${start} , ${length}";
	
	String SAVE_NECESIDADCOMPRA="INSERT INTO COM_NECESIDADESCOMPRAS(NMCEDULARESPONSABLE, CDESTADONECESIDAD, FEANULACIONAPROBACION," +
			"FECREACION, FEMODIFICACION, DSOBSERVACION, CDUSUARIOANULAAPRUEBA, CDUSUARIOCREACION, CDUSUARIOMODIFICACION) " +
			"VALUES (#{responsable.username},#{estado.codigo},#{fechaAnulacionAprobacion},#{fechaCreacion}," +
			"#{fechaModificacion},#{observacion},#{usuarioAnulacionAprobacion.username},#{usuarioCreacion.username},#{usuarioModificacion.username})";
	
	String UPDATE_NECESIDADCOMPRA="UPDATE COM_NECESIDADESCOMPRAS SET NMCEDULARESPONSABLE=#{responsable.username}, " +
			"CDESTADONECESIDAD = #{estado.codigo}, FEMODIFICACION=#{fechaModificacion}, DSOBSERVACION=#{observacion}, " +
			"CDUSUARIOMODIFICACION=#{usuarioModificacion.username}, DSOBSERVACIONANULACION=#{observacionAnulacionAprobacion} " +
			"WHERE CDNECESIDADCOMPRA=#{consecutivo}";
	
	String UPDATE_ESTADONECESIDADCOMPRA="UPDATE COM_NECESIDADESCOMPRAS SET CDESTADONECESIDAD = #{estado.codigo}, FEANULACIONAPROBACION=#{fechaAnulacionAprobacion}, " +
			"CDUSUARIOANULAAPRUEBA=#{usuarioAnulacionAprobacion.username}, DSOBSERVACIONANULACION=#{observacionAnulacionAprobacion} " +
			"WHERE CDNECESIDADCOMPRA=#{consecutivo}";
	
	String DELETE_NECESIDADCOMPRA="DELETE FROM COM_NECESIDADESCOMPRAS WHERE #{consecutivo}";
	
	String COUNT_ALL_NECESIDADCOMPRA="SELECT COUNT(*) FROM COM_NECESIDADESCOMPRAS";
	
	
	
	@Select(SELECT_BY_PK)
	@Results(value = {
	        @Result(property = "consecutivo", column = "CDNECESIDADCOMPRA"),
	        @Result(property = "responsable.username", column = "NMCEDULARESPONSABLE"),
	        @Result(property = "estado", column = "CDESTADONECESIDAD"),
	        @Result(property = "fechaAnulacionAprobacion", column = "FEANULACIONAPROBACION"),
	        @Result(property = "fechaCreacion", column = "FECREACION"),
	        @Result(property = "fechaModificacion", column = "FEMODIFICACION"),
	        @Result(property = "observacion", column = "DSOBSERVACION"),
	        @Result(property = "usuarioAnulacionAprobacion.username", column = "CDUSUARIOANULAAPRUEBA"),
	        @Result(property = "usuarioCreacion.username", column = "CDUSUARIOCREACION"),
	        @Result(property = "usuarioModificacion.username", column = "CDUSUARIOMODIFICACION"),
	        @Result(property = "observacionAnulacionAprobacion", column = "DSOBSERVACIONANULACION"),
	        
	    })
	public NecesidadCompra findByNecesidadCompra(Integer consecutivo);
	
	@Insert(SAVE_NECESIDADCOMPRA)
	@Options(useGeneratedKeys = true, keyProperty = "consecutivo", flushCache=true)
	public int saveNecesidadCompra(NecesidadCompra necesidadCompra);
	
	@Update(UPDATE_NECESIDADCOMPRA)
	@Options(flushCache=true)
	public int updateNecesidadCompra(NecesidadCompra necesidadCompra);
	
	@Update(UPDATE_ESTADONECESIDADCOMPRA)
	@Options(flushCache=true)
	public int updateEstadoNecesidadCompra(NecesidadCompra necesidadCompra);
	
	@Delete(DELETE_NECESIDADCOMPRA)
	@Options(flushCache=true)
	public int deleteNecesidadCompra(Integer consecutivo);
	
	@Select(SELECTE_ALL_NECESIDADCOMPRA)
	@Results(value = { 
			@Result(property = "consecutivo", column = "CDNECESIDADCOMPRA"),
	        @Result(property = "responsable.username", column = "NMCEDULARESPONSABLE"),
	        @Result(property = "estado", column = "CDESTADONECESIDAD"),
	        @Result(property = "fechaAnulacionAprobacion", column = "FEANULACIONAPROBACION"),
	        @Result(property = "fechaCreacion", column = "FECREACION"),
	        @Result(property = "fechaModificacion", column = "FEMODIFICACION"),
	        @Result(property = "observacion", column = "DSOBSERVACION"),
	        @Result(property = "usuarioAnulacionAprobacion.username", column = "CDUSUARIOANULAAPRUEBA"),
	        @Result(property = "usuarioCreacion.username", column = "CDUSUARIOCREACION"),
	        @Result(property = "usuarioModificacion.username", column = "CDUSUARIOMODIFICACION"),
	        @Result(property = "observacionAnulacionAprobacion", column = "DSOBSERVACIONANULACION"),
	        @Result(property = "responsable", column = "NMCEDULARESPONSABLE",  javaType=Usuario.class,
        	one=@One(select="com.sf.crmycompras.persistence.seguridad.UsuarioDAO.findByUsuario"))
	        
	    }) 
	public List<NecesidadCompra> getAllNecesidadCompra(NecesidadCompra necesidadCompra);
	
	@Select(COUNT_ALL_NECESIDADCOMPRA)
	public Integer getCountNecesidadCompra();
	
	
	
	@Results(value = { 
			@Result(property = "consecutivo", column = "CDNECESIDADCOMPRA"),
	        @Result(property = "responsable.username", column = "NMCEDULARESPONSABLE"),
	        @Result(property = "estado", column = "CDESTADONECESIDAD"),
	        @Result(property = "fechaAnulacionAprobacion", column = "FEANULACIONAPROBACION"),
	        @Result(property = "fechaCreacion", column = "FECREACION"),
	        @Result(property = "fechaModificacion", column = "FEMODIFICACION"),
	        @Result(property = "observacion", column = "DSOBSERVACION"),
	        @Result(property = "usuarioAnulacionAprobacion.username", column = "CDUSUARIOANULAAPRUEBA"),
	        @Result(property = "usuarioCreacion.username", column = "CDUSUARIOCREACION"),
	        @Result(property = "usuarioModificacion.username", column = "CDUSUARIOMODIFICACION"),
	        @Result(property = "observacionAnulacionAprobacion", column = "DSOBSERVACIONANULACION"),
	        
	        
	    })
	@SelectProvider(method="selectByParameters", type=SqlBuilderNecesidadCompra.class)
	public List<NecesidadCompra> findByFilters();
}
************************************************** *************

And this is error:

DEBUG java.sql.Connection:27 - ooo Connection Opened
DEBUG org.mybatis.spring.transaction.SpringManagedTransa ction:27 - JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@efe7f3] will not be managed by Spring
DEBUG org.mybatis.spring.SqlSessionUtils:27 - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSessi on@1a6b67b] was not registered for synchronization because synchronization is not active
DEBUG com.mchange.v2.c3p0.stmt.GooGooStatementCache:457 - cxnStmtMgr.statementSet( com.mysql.jdbc.JDBC4Connection@b22224 ).size(): 5
DEBUG com.mchange.v2.c3p0.stmt.GooGooStatementCache:196 - checkoutStatement: com.mchange.v2.c3p0.stmt.GlobalMaxOnlyStatementCac he stats -- total size: 9; checked out: 1; num connections: 3; num keys: 9
DEBUG java.sql.PreparedStatement:27 - ==> Executing:
DEBUG java.sql.PreparedStatement:27 - ==> Parameters:
DEBUG com.mchange.v2.c3p0.impl.NewPooledConnection:430 - com.mchange.v2.c3p0.impl.NewPooledConnection@df8aa a handling a throwable.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: Query was empty
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:40 9)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:3498)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:19 59)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java :2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionIm pl.java:2568)
at com.mysql.jdbc.PreparedStatement.executeInternal(P reparedStatement.java:2113)
at com.mysql.jdbc.PreparedStatement.execute(PreparedS tatement.java:1364)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement .execute(NewProxyPreparedStatement.java:989)
at sun.reflect.GeneratedMethodAccessor66.invoke(Unkno wn Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.ibatis.logging.jdbc.PreparedStatementLo gger.invoke(PreparedStatementLogger.java:45)
at $Proxy95.execute(Unknown Source)
at