Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não Salva com @ManyToOne

Modelo Aluno

@Entity
public class Aluno {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY )
    private Long codaluno;

    @Column
    private String nomealuno;
    @ManyToOne
    private Curso curso;
}

Modelo Curso

@Entity
public class Curso {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codcurso;

    @Column
    private String nome;

    @OneToMany(mappedBy="curso")
    private java.util.List<Aluno> alunos; 
}

Controle

@PostMapping
    @Transactional
    public ResponseEntity<AlunoDto> cadastrar(@RequestBody  AlunoForm form, UriComponentsBuilder uriBuilder) {

        Aluno aluno =  form.converter(cursoRepository);
        alunoRepository.save(aluno);

        URI uri = uriBuilder.path("/alunos/{id}").buildAndExpand(aluno.getCodaluno()).toUri();
        return ResponseEntity.created(uri).body(new AlunoDto(aluno));

    }

Erro

org.postgresql.util.PSQLException: ERROR: column "curso_codcurso" of relation "aluno" does not exist
  Posição: 20
4 respostas

Oi Marcos,

Pelo erro está faltando uma coluna na sua tabela aluno, que é a coluna curso_codcurso utilizada como FK para a tabela de curso.

Dá uma conferida.

Na tabela Aluno tenho o campo codcurso com chave estrangeira.

Consegui aqui! Tinha que ter colocado o nome do campo da chave como curso_codcurso e não somente codcurso.

Outra dúvida. Onde encontro um exemplo de Salvar e Carregar uma imagem no android através de uma API com Spring Boot.

solução!

Coloca então no atributo curso a anotação @JoinColumn para indicar a coluna:

@ManyToOne
@JoinColumn(name = "codcurso")
private Curso curso;

Que deve resolver :)