J'essaie de faire quelque chose de simple dans JPA.Comment obtenir des enregistrements à partir d'une table basée sur deux autres tables JPA
J'ai une table Entreprises:
BusinessId name
------------ ------
1 Joe
2 bob
et de table:
productID name
------------ ------
1 Pen
2 paper
Parce qu'ils apparenté Meny à plusieurs que je crée une autre table businessesHasProductID:
BusinessId productID
------------ -----------
1 1
1 2
2 2
Maintenant, je veux sélectionner BusinessId et productID formulaire entreprisesHasProductID où le nom de Busi nessId = 'x' et le nom de productID = 'y'.
J'ai créé les tables, puis j'ai créé les classes d'entités (à partir de l'assistant dans netBeans). Je sais comment obtenir la table "Businesses" où Businesses.name = 'x' et je sais comment obtenir la table "Products" où Products.name = 'y'. mais je veux combiner ces résultats et obtenir les identifiants.
J'ai essayé de le faire:
Query query = getEntityManager().createQuery("
SELECT b FROM businessesHasProductID WHERE b.BusinessId IN
(SELECT t0.BusinessId FROM Businesses t0 WHERE t0.BusinessId = 'x')
AND b.productID IN
(SELECT t1.productID FROM Products t1 WHERE t1.productID = 'y')
");
Ce n'est pas travaillé. Il se plaint que l'IN contient des données invalides.
Merci. C'est ce que je voulais dire. Mais en réalité la table businessesHasProductID a un champ de plus "prix". donc je veux choisir parmi les entreprisesHasProductID. Le – uriel
il est encore plus facile: sélectionnez business.businessId, Produit.IDProduit de BusinessHasProduct intérieur bhp rejoindre entreprise bhp.business jointure produit bhp.product où business.name = 'x' et product.name = 'y' –
Je vais l'essayer. Merci. – uriel