2012-01-24 337 views
12
  • 我有五个表:公司,产品/服务,地址,国家和 城市。
  • A公司可以有n种产品,其中1种地址,1个国家 ,地址实体内有1个城市。
  • 用户选择了“英格兰 - 利兹”。
  • 我现在知道,我必须选择db的城市 是利兹的所有公司,并使用这些公司的 产品或服务填充产品/服务列表。之后,用户可以从第三个列表中选择例如牙医 。
  • 后,我知道Enlgand - 利兹 - 牙医,我必须填充 最后的名单与compenies(利兹牙医)

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.) 

我如何查询只有那些有类别牙医产品的公司?如何在JOIN中使用JPA Criteria API

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

现在我已经有了每家公司,我如何才能选择正确类别的公司?我想我需要JOIN但我怎么不知道如何使用它。

回答

相关问题