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
但我怎么不知道如何使用它。