javahibernatehql。子查询中的多个
我有以下实体:
@Entity
public class Company {
....
@OneToMany
private List<Product> products = new Arraylist<>();
....
}
@Entity
public class Product {
....
@Column(name="product_key")
private String productKey; // same value as in ProductCategory
....
}
@Entity
public class ProductCategory{
....
@Column(name="product_key")
private String productKey // same value as in Product
@ManyToMany
@JoinTable (...)
private List<Category> categories = new ArrayList<>();
....
}
我想写一个查询,返回公司及其相应的类别:
Company - List<Category>
也就是说,我想要每个公司的产品总分类
目前,我最终得到了这个HQL查询,但它不起作用:
SELECT DISTINCT c,
(SELECT pc.categories
FROM ProductCategories pc
LEFT JOIN c.products products
WHERE pc.productKey IN products.productKey)
FROM Company c
我试图使用@JoinFormula
将虚拟List<Categories>
字段添加到Company
实体,但没有成功(@JoinFormula
不能用于列表类型,只能用于单个值)
# 1 楼答案
我认为你的数据库设计让解决方案变得困难
自公司;产品具有一对多关系,关系的所有者应该是产品。因此,您可以在每个产品中保留对该公司的引用
如果我是你,我会选择这样的设计
公司级
产品类别
ProductCategory类