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

Criação da tabela do jeito correto.

Opa boa noite! Chego na parte que eu realmente quero entender como funciona o relacionamento oneToMany e ManyToOne. Porque tenho no meu produto a tabela desse jeito.


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String nome;
    private Integer quantidade;
    private Double preco;
    private Double precoAVender;
    @OneToMany
    @JoinColumn(name = "fornecedor_codigo")
    private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
    @OneToOne
    @JoinColumn(name = "marca_codigo")
    private Marca marca = new Marca();

Reparem que eu coloquei um OneToMany aqui no meu fornecedores porque a lógica pra mim é que sempre um produto pode ter varios fornecedores diferentes, ou seja varios fornecedores tem o mesmo produto! Mais fazendo dessa forma com essa anotação a minha tabela só vai ter a fk da marca e eu queria que no meu produto tivesse a fk da marca e do fornecedor, dessa forma não é possivel fazer? Quando coloca OneToMany sempre a outra tabela vai receber o lado "forte" da relação? Porque fiz desse jeito e oque aconteceu foi que na tabela fornecedor tem a fk do produto, mas queria ao contrario...


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String nome;
    private Integer quantidade;
    private Double preco;
    private Double precoAVender;
    @OneToMany
    @JoinColumn(name = "fornecedor_codigo")
    private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
    @OneToOne
    @JoinColumn(name = "marca_codigo")
    private Marca marca = new Marca();
@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String celular;
    private String nome;
    private String email;
    private String razaoSocial;
    @ManyToOne
    private Produto produto = new Produto();
2 respostas
solução!

Imagine o seguinte cenário

Fornecedores 1, Rei dos Teclados 2, Senhor dos Teclados 3, Príncipe dos Teclados

Produto 1, teclado , {1,2,3} 2, teclado wifi

Você não tem essa possibilidade de armazenar mais de uma valor(Fornecedor) em uma mesma coluna(coluna dos fornecedores do produto).

Por isso o fornecedor que deve possuir a referência para o produto

@ManyToOne @JoinColumn("SUA FK") private Produto produto = new Produto();

@OneToMany(mappedBy="produto") private List fornecedores = new ArrayList();

Entendeu?

Apenas uma ressalva sobre sua modelagem, se um fornecedor fornecer mais de um produto, vamos ter o seguinte cenário

Fornecedor 1,Rei dos Teclados, 1 2,Rei dos Teclados, 2

O Fornecedor Rei dos Teclados fornece os produtos "teclado" e "teclado wifi", ou seja, vc repetirá o fornecedor para cada produto fornecido.

Caso não queira isso, considere ter uma relacionamento muitos-muitos entre Produto e Fornecedor.

Cara eu ainda não peguei a lógica, então do jeito que está ta correto? é isso mesmo? mais eu queria a relação forte do lado produto, porque irei cadastrar um produto e no meu produto ter um selectMenu e trazer linha lista de fornecedores entedeu?