I'm triying to calling a rest application but I get a 500 error. The problem maybe be on the MyBatis call but still can't fix it.
This is where I call the execution of MyBatis
@Override
public List<IdentitatBDTO> searchIdentitatsRepresentantsByRelacioIdentitatRepresentat(final String representatIdentificador, final Date dateFi) {
List<Identitat> identitats = myBatisTemplate.execute(RelacioDao.class, new MyBatisDaoCallback<List<Identitat>>() {
@Override
public List<Identitat> execute(MyBatisDao dao) {
return ((RelacioDao) dao).searchIdentitatsRepresentantsByRelacioIdentitatRepresentat(representatIdentificador, dateFi);
}
});
The error that I'm getting is
{
"errorUrl":
"http://localhost:8080/idjrepresentaciorest/rest/representacio/representants/12340002L",
"errorMessage": "\r\n### Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'representatIdentificador' not found. Available parameters are [1, 0, param1, param2]\r\n### Cause: org.apache.ibatis.binding.BindingException: Parameter 'representatIdentificador' not found. Available parameters are [1, 0, param1, param2]",
"errorStackTrace": "org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'representatIdentificador' not found. Available parameters are [1, 0, param1, param2]\r\n### Cause: org.apache.ibatis.binding.BindingException: Parameter 'representatIdentificador' not found. Available parameters are [1, 0, param1, param2]\r\n\tat org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n\tat org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)\r\n\tat org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)\r\n\tat org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)\r\n\tat org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)\r\n\tat org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)\r\n\tat com.sun.proxy.$Proxy85.searchIdentitatsRepresentantsByRelacioIdentitatRepresentat(Unknown Source)\r\n\tat es.bcn.idj.representaciorest.business.impl.RelacioServiceImpl$1.execute(RelacioServiceImpl.java:61)\r\n\tat es.bcn.idj.representaciorest.business.impl.RelacioServiceImpl$1.execute(RelacioServiceImpl.java:1)\r\n\tat net.opentrends.openframe.services.persistence.mybatis.template.impl.MyBatisTemplateImpl.execute(MyBatisTemplateImpl.java:64)\r\n\tat
But I debugged and saw that the variable that appears to be the problem is filled correctly so why is MyBatis not founding the variable?
@Param annotation has two, one belongs to spring, one belongs to mybatis.Their usage is different.
User getUserById(@Param("id") Integer id);
<select id="getUserById" resultMap="userMap">
select name,age
from user
where id=#{0, jdbcType=INTEGER}
<select/>
It's based on the order of the parameters, and starts from 0.User getUserById(@Param("id") Integer id);
<select id="getUserById" resultMap="userMap">
select name,age
from user
where id=#{id, jdbcType=INTEGER}
<select/>
Is based on the parameter name.So, check that the annotations you introduced in mapper.java are consistent with the usage in mapper.xml.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With