У меня есть код, который должен получить некоторые данные из представления в базе данных Oracle (используя mybatis).
Это динамический запрос, который получает один параметр
пример глупого кода:
//Repo Class
@Select("select surname, name from vw_example where name=#{name}")
@Results({
@Result(property = "surname", column = "surname"),
@Result(property = "name", column = "name"),
})
public List<Result> getSurname(@Param("name") String id)
//Test Class
@Autowired RepoClass repo;
@Test
public void testGetSurname(){
List<Result> result = repo.getSurname("Danilo");
AssertThat(result.size(),is(2));
}
Важная вещь (в базе данных, над которой я работаю, столбец для имени - это CHAR [40] (Пожалуйста, не спрашивайте почему .., но я не могу его изменить).
Учитывая, что есть 2 записи, которые содержат "Danilo" в качестве значения для столбца "Имя" в базе данных, он должен вернуть мне 2 строки и сопоставить с объектом "Результат".
Однако этого не происходит. Актив идет с фактическим: 0
Теперь сумасшедшая вещь ...
Если я изменю это:
@Select("select surname, name from vw_example where name=#{name}")
к этому:
@Select("select surname, name from vw_example where name='Danilo'")
работает как шарм !!
Информация:
(Я уже пытался передать jdbcType (# {name, jdbcType = CHAR))
(Кажется, параметр заменяется, потому что я заменил оператор Select для вставки значением параметра, и он работает нормально)
Может ли кто-нибудь помочь с этим сумасшедшим?
Спасибо