2012-01-24 17 views
12
  • Ho cinque tabelle: azienda, prodotto/servizio, indirizzo, paese e città.
  • Un'azienda può avere n prodotti con categoria, 1 indirizzo con 1 paese e 1 città all'interno dell'entità indirizzo.
  • Un utente ha scelto "Inghilterra - Leeds".
  • Ora so che devo selezionare tutte le società da db dove la città è Leeds e compilare la lista prodotti/servizi con i prodotti o servizi di tali aziende . Dopo che l'utente può selezionare per esempio il dentista dal terzo elenco.
  • Dopo che so Enlgand - Leeds - Dentista e devo compilare l'ultimo elenco con compenies (dentisti a 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.) 

Come posso interrogare solo quelle aziende che hanno prodotti con dentista di categoria?Come utilizzare l'API dei criteri JPA in JOIN

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(); 

Ora ho ogni azienda, come posso selezionare solo le aziende con la categoria corretta? Penso che avrò bisogno di JOIN ma come non so come usarlo.

risposta

Problemi correlati