java – Como alterar o resultado de um @Getmapping na API Rest com Spring?

Eai guys, tudo bem? Comecei estudar Spring recentemente por conta própria e estou tentando criar uma API Rest para cadastro de alunos e provas em uma escola.

Estou com o seguinte problema:

Quando eu faço uma requisição GET para listar todos os alunos cadastrados no banco, retorna um json gigante como esse:

localhost:8080/api/alunos

({
    "id" : 1,
    "nome" : "Carlos Eduardo Ribeiro",
    "media" : 0.0,
    "provas" : ({
        "id" : 1,
        "nota" : 0.0,
        "aluno" : {
            "id" : 1,
            "nome": "Carlos Eduardo Ribeiro",
            "media" : 0.0,
            "provas" : ({
                "id" : 1,
                "nota" : 0.0,
                "aluno" : {
                    "id" : 1,
                    "nome" : "Carlos Eduardo Ribeiro",
                    "media": 0.0,
                    "provas": ({
                        "id" : 1,
                        "nota" : 0.0,
                        "aluno" : {
                            "id" : 1,
                            "nome":"Carlos Eduardo Ribeiro",
                            "media":0.0,
                            "provas": ({
                                ......
                                    ......
                                        ......

Aqui está os models:
Aluno.java

@Entity(name = "aluno")
public class Aluno {

    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable = false, length = 50)
    private String nome;

    @Column(nullable = false)
    private Float media;

    // Um aluno contem uma lista de Provas:
    @OneToMany(mappedBy = "aluno")
    private List<Prova> provas;

    // Construtor
    public Aluno() {
        this.setMedia(0.0f);
    }

    // Getters | Setters
    
}

Prova.java

@Entity
public class Prova {

    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable = false)
    private Float nota;

    @ManyToOne
    @JoinColumn(name = "id_aluno")
    private Aluno aluno;

    @OneToMany(mappedBy = "prova")
    private List<Questao> questoes;


    // Contrutor:
    public Prova() {
        this.setNota(0.0f); // define a nota padrão
    }

    // Getters | Setters
    
}

Aqui está o Controller:
AlunoController.java

@RestController
public class AlunoController {

    @Autowired
    private AlunosRepository repository;

    // Faz uma consulta pelo id do aluno:
    @GetMapping(path = "/api/aluno/{id}")
    public ResponseEntity consultar(@PathVariable(name = "id") Integer id) {
        // Faz e retorna a consulta:
        return this.repository.findById(id)
                .map(record -> ResponseEntity.ok().body(record))    // Monta e retorna o ResponseBody com o registro
                .orElse(ResponseEntity.notFound().build());         // Caso contrário retorna um notFound
    }

    // Cadastra um novo aluno:
    @PostMapping(path = "/api/aluno/cadastrar")
    public Aluno cadastrar(@RequestBody Aluno aluno) {
        return this.repository.save(aluno); // Cadastra o aluno recebido no RequestBody e retorna
    }

    // Retorna todos os alunos cadastrados:
    @GetMapping(path = "/api/alunos")
    public List<Aluno> consultarAlunos() {
        return this.repository.findAll();
    }

}

Tentei fazer:

Tentei alterar o método consultarAlunos() para percorrer os registros com um foreach e ir atribuindo null ao objeto aluno da entidade Prova e funcionou, porém, eu não quero que o resultado retorne o “aluno” dentro de cada prova na lista.
O método ficou assim:

@GetMapping(path = "/api/alunos")
public @ResponseBody ResponseEntity<Aluno> consultarAlunos() {

    List<Aluno> alunos = new ArrayList<>(); // Cria uma lista para receber o resultado da request
    List<Prova> provas = new ArrayList<>(); // Array list para armazenas as provas sem o objeto aluno.

    // Percorre a lista de alunos:
    for ( Aluno aluno : this.repository.findAll() ) {

        // percorre a lista de provas do aluno:
        for( Prova prova : aluno.getProvas() ) {
            prova.setAluno(null);   // O objeto aluno não precisa ser especificado mais de uma vez.
            provas.add(prova);
        }

        aluno.setProvas(provas);
        alunos.add(aluno);

    }

    return new ResponseEntity(alunos, HttpStatus.OK);   // Cria e retorna os resultados.
}

resultado:

localhost:8080/api/alunos

({
    "id" : 1,
"nome" : "Carlos Eduardo Ribeiro",
        "media" : 0.0,
    "provas" : (
        {
            "id" : 1,
            "nota" : 0.0,
            "aluno" : null,
            "questoes" : ()
        }
    )
})

Como eu faço para obter um resultado parecido com o acima, porém no lugar do “aluno” : null eu obter o id relacionado a prova?
Obrigado.