Select JPA OneToMay

5 respostas
M

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

5 Respostas

Lavieri

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 …

M

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

Lavieri

estou sempre fazer com Criteria (que é do hibernate) o JPA propriamente dito n tem… mas c tiver usando hiberante fica facil =x

M

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!!!

gregorioenrico

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!

Criado 20 de maio de 2009
Ultima resposta 22 de mai. de 2009
Respostas 5
Participantes 3