Spring MCV + Mybatis + Anottations @SelectProvider
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