Я пытаюсь это сделать:
@Query(value = "SELECT DISTINCT c.* FROM comarca c INNER JOIN debito_negativacao d ON d.comarca_id = c.id WHERE d.status = :status", nativeQuery = true)
List<Comarca> findDistinctComarcaByStatus(@Param("status") String status);
Но я получаю такую ошибку:
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [com.hc.projects.model.Comarca] for value '{9, 0, 7323}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.math.BigInteger] to type [com.hc.projects.model.Comarca]




Вы должны вернуть все столбцы, необходимые для построения Comarca. Так что вам придется присоединиться к столу.
Поскольку не предоставил таблицы, я могу только догадываться:
@Query(value = "SELECT DISTINCT * FROM comarca c " +
"JOIN debito_negativacao d ON d.comarca_id = c.id "+
"WHERE d.debito_negativacao.status= :status", nativeQuery = true)
List<Comarca> findDistinctComarcaIdByStatus(@Param("status") String status);
В вашем запросе указано, что вам нужен список BigInteger: SELECT DISTINCT comarca_id... потому что comarca_id, я думаю, является большим целым числом. Если вы хотите список Comarca, вы должны запросить на всех ваших столах.
Если вы хотите использовать отдельный запрос, который будет возвращать столбцы, отличные от отдельного, вам нужна какая-то стратегия, как «объединить» объекты. Представьте себе такие строки:
------------------------------
| comarca_id| key | status |
| 1 | A | your_state|
| 1 | B | your_state|
| 2 | C | your_state|
------------------------------
Что бы вы получили в этом случае?
SELECT DISTINCT comarca_id FROM comarca; вернет 1,2
Однако как объединить две (или более) записи с одинаковыми comarca_id и status?
Это оставляет вам три случая:
comarca_id + status уникален -> вам не нужен запрос DISTINCTcomarca_id и status -> вы не можете сделать запрос отличнымcomarca_id -> сделайте так, чтобы ваш метод возвращал List<BigInteger>Если во второй раз вы захотите изолировать список comarca_id, попробуйте передать результат вашего запроса в потоковом режиме.
List<Comarca> comarca = debitoNegativacao.stream().map(dn -> dn.getComarca()).distinct().collect(Collectors.toList());
++
сделал как вы говорите, но ошибка осталась. Вопрос по адресу