Pessoal,
Tenho as classes Fornecedor que tem um ligação OneToMay para Produtos e Produtos que tem ligação MayToOne para Categoria.
Para fazer a ligação OneToMay do Fornecedor Produto o JPA criou uma tablela para ligar as duas classes.
Queri fazer um select para pegar os produtos filtrando por Fornecedor e Categoria, pensei em fazer o select da seguinte maneira:
select p from Produto p " +
"inner join fornecedor_produto fp on p.id = fp.produtos_id " +
"inner join fornecedor f on f.id = fp.fornecedor_id " +
"where f.id = :fornecedor and p.categoria_id = :categoria
Mas quando tento rodar a apalicação ele da erro indicando que não tenho a entidade fornecedor_produto.
Relamente não tenho pq quem criou esta tabela foi o netbeans!!!
Minha pergunta, devo criar a entidade para esta tabela, ou devo fazer o select de outra forma ?
Obrigado,
Marcelo Gomes
Não deve… fazer a entidade não…
vc tem certeza que a ligação entre Fornecedor 1 - N Produto ??
pq c for assim não há sentido da tabela de ligação, exceto c a ligação for de Fornecedor N - N Produto … ai faz sentido a tabela…
caso um produto só possa ser associado a um único forncedor… então vc pode colocar a FK de fornecedor, dentro da tabela de produtos…
caso um produto possa se ligar a muitos fornecedores, então faz-se necessario a tabela de ligação N-N …
Tem razão vou colocar a fk do fornecedor dentro do produto e ai resolve o meu problema… pelas regras do negocio cada produto só pode ter um fornecedor e um fornecedor pode ter varios produtos.
mas como faria no caso de ter uma ligação N-N como fica ? ai neste caso crio a entidade para esta tabela de ligação ???
Obrigado,
Marcelo Gomes
estou sempre fazer com Criteria (que é do hibernate) o JPA propriamente dito n tem… mas c tiver usando hiberante fica facil =x
Nesta caso num da pra eu usar o criteria pq esta aplicação que estou fazendo é para um trabalho escolar…rs se tiver mais alguma ideia … se decobrir alguma coisa eu posto aqui !!!
Obrigado pela força!!!
Marcelo,
com JPA, na consulta, vc tem que usar a entidade, e não o nome da tabela. Por isso que ele dá erro na linha 2 do código que vc colou aqui. Já tentou a consulta sem essa linha? E, na linha 3, teria que colocar “Fornecedor” em vez de “fornecedor”, tem que ser como tá na classe.
Vê aí se dá certo.
Abraço!