Select JPA OneToMay

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!