Ao tentar cadastrar e referênciar uma tabela, ele cria uma nova inserção

Estou desenvolvendo uma API, utilizando spring boot e flyway pra migration e mysql no banco, estou com um problema quando estou realizando o cadastro na tabela de comentario, que deveria referenciar a atividade que foi comentada e o usuario que comentou, mas quando faço o cadastro ele tenta criar uma nova atividade informando que tem valores que estão nulos, ao invés de referenciar uma que ja existe. Eu ainda sou iniciante com Spring. Abaixo os códigos:

classe de comentário:

package med.voll.api.comentario;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.atividade.Atividade;
import med.voll.api.usuario.Usuario;
import org.hibernate.annotations.Cascade;

import java.util.Date;

@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Entity(name = "comentario")
@Table(name = "comentario")
public class Comentario {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long Id;
    private String titulo;

    private String descricao_comentario;
    private Date data_comentario;
    @ManyToOne
    @JoinColumn(name = "id_usuario")
    private Usuario usuario;
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "id_atividade")
    private Atividade atividadecomentada;

    public Comentario(DadosCadastroComentario dadosCadastroComentario){
        this.titulo = dadosCadastroComentario.titulo();
        this.descricao_comentario = dadosCadastroComentario.descricao_comentario();
        this.data_comentario = dadosCadastroComentario.data_comentario();
        this.usuario= dadosCadastroComentario.usuario();
        this.atividadecomentada = dadosCadastroComentario.atividadecomentada();
    }

    public void atualizarInformacoes(DadosAtualizarComentario dadosAtualizarComentario) {
        if(dadosAtualizarComentario.titulo() != null){
            this.titulo = dadosAtualizarComentario.titulo();
        }
        if(dadosAtualizarComentario.descricao_comentario() != null){
            this.descricao_comentario = dadosAtualizarComentario.descricao_comentario();
        }
        if(dadosAtualizarComentario.data_comentario() != null){
            this.data_comentario = dadosAtualizarComentario.data_comentario();
        }
        if(dadosAtualizarComentario.usuario() != null){
            this.usuario = dadosAtualizarComentario.usuario();
        }
        if(dadosAtualizarComentario.atividadecomentada() != null) {
            this.atividadecomentada = dadosAtualizarComentario.atividadecomentada();
        }

    }

}

classe da atividade:

package med.voll.api.atividade;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.projeto.Projeto;
import med.voll.api.usuario.Usuario;

import java.util.Date;

@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Entity(name = "atividade")
@Table(name = "atividade")
public class Atividade {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long Id;
    private String titulo;
    private String descricao;
    private Date inicio;
    private Date encerramento;
    @Enumerated(EnumType.STRING)
    private Estado estado;
    @Enumerated(EnumType.STRING)
    private Dificuldade dificuldade;
    private int prioridade;
    private String tempo_execucao;
    @ManyToOne
    @JoinColumn(name = "id_projeto")
    private Projeto projeto;
    @ManyToOne
    @JoinColumn(name = "responsavel")
    private Usuario responsavel;
    private Boolean ativo;


    public Atividade(DadosCadastroAtividade dadosCadastroAtividade){
        this.ativo = true;
        this.titulo = dadosCadastroAtividade.titulo();
        this.descricao = dadosCadastroAtividade.descricao();
        this.inicio = dadosCadastroAtividade.inicio();
        this.encerramento = dadosCadastroAtividade.encerramento();
        this.estado = dadosCadastroAtividade.estado();
        this.dificuldade = dadosCadastroAtividade.dificuldade();
        this.prioridade = dadosCadastroAtividade.prioridade();
        this.tempo_execucao = dadosCadastroAtividade.tempo_execucao();
        this.projeto = dadosCadastroAtividade.projeto();
        this.responsavel = dadosCadastroAtividade.responsavel();
    }

    public void atualizarInformacoes(DadosAtualizarAtividade dadosAtualizarAtividade) {
        if(dadosAtualizarAtividade.titulo() != null){
            this.titulo = dadosAtualizarAtividade.titulo();
        }
        if(dadosAtualizarAtividade.descricao() != null){
            this.descricao = dadosAtualizarAtividade.descricao();
        }
        if(dadosAtualizarAtividade.encerramento() != null){
            this.encerramento = dadosAtualizarAtividade.encerramento();
        }
        if(dadosAtualizarAtividade.estado() != null){
            this.estado = dadosAtualizarAtividade.estado();
        }
        if(dadosAtualizarAtividade.dificuldade() != null){
            this.dificuldade = dadosAtualizarAtividade.dificuldade();
        }
        if(dadosAtualizarAtividade.prioridade() != 0){
            this.prioridade = dadosAtualizarAtividade.prioridade();
        }
        if(dadosAtualizarAtividade.tempo_execucao() != null){
            this.tempo_execucao = dadosAtualizarAtividade.tempo_execucao();
        }
        if(dadosAtualizarAtividade.responsavel() != null){
            this.responsavel = dadosAtualizarAtividade.responsavel();
        }

    }

    //Paginação
    public void excluir() {
        this.ativo = false;
    }
}

Tabela do comentário no banco

CREATE TABLE comentario (
    id INT NOT NULL AUTO_INCREMENT,
    titulo VARCHAR(100) NOT NULL,
    descricao_comentario VARCHAR(100)NOT NULL,
    data_comentario DATE NOT NULL,
    id_atividade INT,
    id_usuario INT,
    CONSTRAINT id_atividade_comentario FOREIGN KEY (id_atividade) REFERENCES futurize.atividade(id),
    CONSTRAINT id_usuario_comentario FOREIGN KEY (id_usuario) REFERENCES futurize.usuario(id),
    primary key (id)
)

Tabela da atividade no banco

CREATE TABLE atividade(
     id INT  NOT NULL AUTO_INCREMENT,
     titulo VARCHAR(100) NOT NULL,
     descricao VARCHAR(200),
     inicio DATE NOT NULL,
     encerramento DATE NOT NULL,
     estado varchar(100) not null,
     id_projeto INT,
     responsavel INT,
     CONSTRAINT id_projeto_atividade FOREIGN KEY (id_projeto) REFERENCES futurize.projeto(id),
     CONSTRAINT responsavel FOREIGN KEY (responsavel) REFERENCES futurize.usuario(id),
     primary key (id)
);

Ao cadastrar um Comentario, como vc está vinculando a Atividade? Como a atividade está sendo criada em DadosCadastroComentario? Ela está vindo com o id preenchido?

Estou vinculando a atividade já existente em banco, segue o json com os dados:

{
	"titulo": "titulo",
	"descricao_comentario": "Teste de descrição",
	"data_comentario": "2023-01-15",
	"usuario": {"id": 1},
	"atividadecomentada": {"id": 1}
}

No DadosCadastroComentario ela ta sendo criada assim:

package med.voll.api.comentario;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import med.voll.api.atividade.Atividade;
import med.voll.api.atividade.DadosCadastroAtividade;
import med.voll.api.usuario.DadosCadastroUsuario;
import med.voll.api.usuario.Usuario;

import java.util.Date;

public record DadosCadastroComentario(
        @NotBlank
        String titulo,
        @NotBlank
        String descricao_comentario,
        @NotNull
        Date data_comentario,
        @NotNull
        Usuario usuario,
        @NotNull
        Atividade atividadecomentada) {
}

sobre ele estar vindo com o id preenchido, ele já gera o id automaticamente