Boa noite!
No exemplo apresentado nessa aula, o professor cria um atributo categoria dentro da classe produto. Notei que quando vamos inserir um registro com uma coluna chave estrangeira, a JPA automaticamente insere como _id.
Exemplo:
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String descricao;
private double preco;
private LocalDate dataCadastro = LocalDate.now();
@ManyToOne
private Categoria categoria;
}
Nota que o atributo chave estrangeira se chama categoria. No entanto, quando adicionamos no banco de dados a JPA nos retorna a seguinte mensagem:
Hibernate: insert into produtos (categoria_id, dataCadastro, descricao, nome, preco) values (?, ?, ?, ?, ?)
O atributo categoria automaticamente foi mapeado para categoria_id.
Minha pergunta é: caso no banco de dados minha coluna chave estrangeira não assuma esse padrão de nomenclatura (nome_id), como posso configurar para que a JPA saiba em que coluna inserir meu atributo?
Tentei usar o @Column(name = "qualquercoisa"), mas o compilador me retornou a seguinte exceção:
Exception in thread "main" java.lang.ExceptionInInitializerError
at br.com.kaezyro.alura.loja.main.CadastroDeProduto.main(CadastroDeProduto.java:17)
Caused by: org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property: br.com.kaezyro.alura.loja.model.Produto.categoria
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1778)
Obrigado pela ajuda desde já!