2017-02-26 43 views
0

我正在尝试为以下模型编写hql。许多到多个显式关系的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 

SubCategory.java

@Entity 
public class SubCategory implements Serializable { 


    private static final long serialVersionUID = 7750738516036520962L; 

    @Expose(serialize = true, deserialize = true) 
    @Id 
    @GeneratedValue 
    private Integer subCategoryId; 

    @Expose(serialize = true, deserialize = true) 
    @NotEmpty(message = "The subcategory name must not be empty") 
    @Size(min = 3, max = 20, message = "Minimum 3 to 20 characters allowed") 
    private String subCategoryName; 

    @Expose(serialize = false, deserialize = false) 
    @ManyToOne 
    @JoinColumn(name="categoryId") 
    private Category category; 
//getter setter 

我想查询的子类别表的subcategoryname基地通过PRODUCT_SUBCATEGORY表来获取产品数据。示例查询如下所示。

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。

谢谢。

回答

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

谢谢@JBNIZET,这对我很有用。 – soewin