Comment utiliser l'API JPA Criteria dans JOIN
- J'ai cinq tables: Entreprise, Produit, Service, Adresse, Pays et
Ville. - Une Entreprise peut avoir n produits à la catégorie, 1 adresse 1 pays
et 1 la ville à l'intérieur de l'entité adresse. - Un utilisateur a choisi de "Angleterre - Leeds".
- Je sais maintenant que j'ai pour sélectionner toutes les entreprises à partir de db lorsque la ville de
est de Leeds et de le remplir de produit/service-liste des sociétés
des produits ou des services. Après que l'utilisateur peut sélectionner par exemple le dentiste
à partir de la troisième liste. - Apres ce que je sais Enlgand - Leeds - Dentiste et j'ai à remplir
la dernière liste avec compenies (dentistes à Leeds)
public class Company implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Short companyId;
@OneToOne(cascade=CascadeType.PERSIST)
private Address address;
private String companyName;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "company",cascade=CascadeType.PERSIST)
private Set<Product> products = new HashSet<Product>(0);
public class Product implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "productId", unique = true, nullable = false)
private Integer productId;
private Short branchId;
private String productName;
private String sku;
private String category; ------> I am using this field in company search (dentists, garages etc.)
Comment puis-je interroger uniquement les entreprises qui ont des produits à la catégorie dentiste?
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Company> criteria = criteriaBuilder.createQuery( Company.class );
Root<Company> companyRoot = criteria.from( Company.class );
//criteria.select(companyRoot);
TypedQuery<Company> q = em.createQuery(criteria);
List<Company> results = q.getResultList();
Maintenant, j'ai chaque entreprise, comment puis-je sélectionner seulement les entreprises avec la bonne catégorie? Je pense que j'aurai besoin de JOIN
mais comment je ne sais pas comment l'utiliser.
source d'informationauteur Sami | 2012-01-24
Vous devez vous connecter pour publier un commentaire.
utiliser join(),
Voir,
http://en.wikibooks.org/wiki/Java_Persistence/Querying#Joining.2C_querying_on_a_OneToMany_relationship