Spring MVC: Não retorna corretamente ao filtrar tarefas por status

Estou tentando filtrar tarefa por status, mas trás todas as tarefas, segue o código:

@Repository
public interface TaskRepository  extends JpaRepository<Task, Long>{
	
	@Query(value = "SELECT * FROM TB_TASK T1 WHERE T1.STATUS = :statusCode", nativeQuery = true )
	List<TaskDTO> listTaskByStatus(Long statusCode);
	
}
@Service
@Transactional(readOnly = true)
	public List<TaskDTO> findlistTaskByStatus(Long statusCode) {
		List<TaskDTO> list = taskRepository.listTaskByStatus(statusCode);		
		return list.stream().map(x -> new TaskDTO()).collect(Collectors.toList());
	}
@Resource ou @Controller
@GetMapping(value = "?status={statusCode}")
	public ResponseEntity<List<TaskDTO>> listStatus(@PathVariable Long statusCode){
		List<TaskDTO> codeStatus = taskService.findlistTaskByStatus(statusCode);
		return ResponseEntity.ok().body(codeStatus);
	}

No Postman me trás o resultado de todas as tarefas, mesmo colocando o ID=1,2 ou 3, não esta filtrando:

No H2 a consulta funciona corretamente:
image

O mesmo ocorre para listar tarefas de um usuário especifico, só que me retorna status 500:

@Repository
public interface UserRepository extends JpaRepository<User, Long>{
	
	@Query(value = "SELECT * FROM TB_USER_TASK T1" + 
			"        INNER JOIN TB_USER T2 ON T1.USER_ID = T2.ID" + 
			"        INNER JOIN TB_TASK T3 ON T1.TASK_ID = T3.ID" + 
			"        WHERE T2.ID = :userCode ", nativeQuery = true)
	List<User> listAllTasksByUser(Long userCode);

@Services

@Transactional(readOnly = true)
	public List<UserDTO> findListAllTasksByUser(Long userCode) {
		List<User> list = userRepository.listAllTasksByUser(userCode);		
		return list.stream().map(x -> new UserDTO()).collect(Collectors.toList());
	}igite ou cole o código aqui

@Controller ou @Resource

@GetMapping(value = "/{userCode}/tasks")
	public ResponseEntity<List<UserDTO>> listAllTasksByUser(@PathVariable Long userCode){
		List<UserDTO> codeUser = userService.findListAllTasksByUser(userCode);
		return ResponseEntity.ok().body(codeUser);
	}

No H2, tudo ok com a consulta:

Erro no Postman:

Link do repositorio:
GitHub do Projeto
Já pesquisei e fiz as modificações, mas sem sucesso, qualquer auxilio será bem vindo!

O teu statusCode é um long mas no Postman estás a usar uma String PENDENTE

Olá amigo plmn, ja entrei com número 1,2 e 3 como havia explicado, mas o resultado é o mesmo. No enum onde esta os 3 status é uma string acompanhado pelo códigos de 1 a 3, na classe enum Status tem um método para guardar no banco com o código, para mostrar ao usuário mostra uma string, Pendente, Em_Andmento ou Concluída.

No teu controller do listStatus tens o statusCode como PathVariable. Isso é para quando tens o valor no meio do path (como tens no listAllTasksByUser). Para query parameters deves usar RequestParam

O segundo erro que tens é porque estás a obter dados de três tabelas e todas devem ter a coluna id, pelo que o spring não sabe que id deve mapear para onde.

Fiz as alterações pmlm, mas não resolveu no caso das 3 tabelas, a terceira é uma tabela auxiliar para relação N-N entre as tarefas e status, não sei como seria nesse caso inserir um ID na tabela enum de status, nunca cheguei a fazer isso. Agradeço seu apoio!

O problema não é a inserir, é a obter. Estas a obter dados de 3 tabelas quando acredito que só precises de dados de uma tabela para preencher o teu DTO (é mesmo um UserDTO que queres devolver aqui? Não será um TaskDTO?)

Assumindo que é um TaskDTO, tens de mudar

para

@Query(value = "SELECT t3.* FROM TB_USER_TASK T1" + 
		"        INNER JOIN TB_USER T2 ON T1.USER_ID = T2.ID" + 
		"        INNER JOIN TB_TASK T3 ON T1.TASK_ID = T3.ID" + 
		"        WHERE T2.ID = :userCode ", nativeQuery = true)