1
resposta

Spring Data - Failed to convert from type [java.lang.Object[]]

Olá. Usando o projeto exemplo da aula, estou tentando executar uma Query nativa para pegar valores de uma coluna de cada tabela. A query executa. mas ela nao instancia os valores que encontra.

Classe Request: Classe Request

Classe RequestRepository Classe RequestRepository

Exception Gerada:

Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [br.ind.wd.spring.data.orm.Request] for value '{1, Rafael, Programador, WD_Automacao}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Integer] to type [br.ind.wd.spring.data.orm.Request]

Se alguem puder me dar uma luz eu agradeço

1 resposta

Olá Rafael, tudo bem?

Pelo que entendi, você está tentando executar uma Query nativa para pegar valores de uma coluna de cada tabela, mas a query executa e não instancia os valores que encontra. A exceção gerada indica que houve um erro de conversão de tipo.

Pelo que pude analisar, o problema pode estar relacionado ao fato de que a query nativa está retornando um array de objetos e o Spring Data não está conseguindo converter esses objetos para o tipo Request.

Uma possível solução seria criar uma classe DTO (Data Transfer Object) que represente os dados que você está buscando na query e mapear os resultados da query para essa classe DTO.

Por exemplo, você poderia criar uma classe RequestDTO com os atributos que você está buscando na query:

public class RequestDTO {
    private Long id;
    private String name;
    private String role;
    private String department;
    // getters e setters
}

E na sua query nativa, você poderia selecionar os valores das colunas e mapeá-los para a classe RequestDTO:

@Query(value = "SELECT r.id, r.name, r.role, d.name as department FROM request r JOIN department d ON r.department_id = d.id", nativeQuery = true)
List<RequestDTO> findAllRequests();

Dessa forma, o Spring Data irá converter os resultados da query para a lista de objetos RequestDTO, que você poderá utilizar na sua aplicação.

Espero ter ajudado e bons estudos!