У меня есть реализация DAO по весенним данным:
public interface TestDataRepository extends CrudRepository<DpConfigData, Long> {
@Query(value = "select distinct(oid) from unit", nativeQuery = true)
List<Long> testMethod();
}
И единичный тест для проверки стандартного DAO:
@Test
public void test(){
List<Long> testData = dpConfigDataEntityDataRepository.testMethod();
for (Long oid:testData){
System.out.print(oid);
}
}
Запуск теста дает странный результат - List<Long> testData
во время выполнения заполняется экземплярами BigInteger, а не Long. В результате я получаю ClassCastException: java.math.BigInteger не может быть добавлен в java.lang.Long
Реализация JPA - спящий режим. В БД я использую PostgreSQL, unit.oid
поле имеет тип BigInt на слое DB. Он отображен на Long в случае выборки всего блока, но с настраиваемым запросом как "select different..." что-то пошло не так, и оно сопоставляется с BigInteger.
Итак, мой вопрос: в чем причина такого странного поведения? Как решить/переделать его элегантным способом?