1
resposta

Duvida em relação a notação @OneToOne e @JoinColumn

Eu tenho uma classe/entidade que possui um campo cod_produto. Outras duas classes/entidades se relacionam com ela usando o mesmo campo cod_produto. Quando faço o primeiro relacionamento funciona corretamente mas quando tento fazer o segundo ocorre campo duplicado.

@OneToOne(targetEntity=EtiquetaWMSValidade.class , fetch= FetchType.EAGER)
    @JoinColumn(name="COD_PRODUTO" , referencedColumnName = "COD_PRODUTO")
    private EtiquetaWMSValidade etiquetaWMSValidade;

@OneToOne(targetEntity=Produto.class , fetch= FetchType.EAGER)
    @JoinColumn(name="COD_PRODUTO" , referencedColumnName = "COD_PRODUTO")
    private Produto produto;

Como resolver isso?

1 resposta

A anotação @JoinColumn indica que esta entidade é a proprietária do relacionamento (ou seja: a tabela correspondente possui uma coluna com uma chave estrangeira para a tabela referenciada).

Ou seja, você terá que deixar os "names" diferentes. Algo como:

@JoinColumn(name="COD_PRODUTO")
@JoinColumn(name="COD_ETIQUETA")

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software