Java 多对多解释关系的HQL查询

Java 多对多解释关系的HQL查询,java,sql,hibernate,many-to-many,hql,Java,Sql,Hibernate,Many To Many,Hql,我正在尝试为以下模型编写hql Product.java @Entity public class Product implements Serializable { private static final long serialVersionUID = -3532377236419382983L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private int productId;

我正在尝试为以下模型编写hql

Product.java

@Entity public class Product implements Serializable {

    private static final long serialVersionUID = -3532377236419382983L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int productId;

    @NotEmpty(message = "The product name must not be empty")
    private String productName;

    private String productCategory;

    private String productDescription;

    @ManyToMany
    @JsonIgnore     @JoinTable(name="PRODUCT_SUBCATEGORY", 
                joinColumns={@JoinColumn(name="productId")}, 
                inverseJoinColumns={@JoinColumn(name="subCategoryId")})
    private Set<SubCategory> subCategory = new HashSet<SubCategory>(); //getter setter
我想根据子类别表的子类别名称进行查询,通过product_子类别表获取产品数据。示例查询如下所示

select * from product where productid in(
select psc.productid from
subcategory sc
inner join product_subcategory psc
on sc.subcategoryid=psc.subcategoryid
where sc.subcategoryname like 'men ware%');
如何在hql中实现上述sql

多谢各位

select distinct p from Product p 
join p.subCategory sc 
where sc.subCategoryName like :name
select distinct p from Product p 
join p.subCategory sc 
where sc.subCategoryName like :name