如何在投影中添加具有嵌套實體的完整實體。在投影中添加具有嵌套實體的完整實體
問題是我想將給定的HQL轉換爲Criteria API。
SELECT p FROM Product p LEFT JOIN p.reviews r GROUP BY p ORDER BY r.rating ASC
考慮1產品有很多評論。 (一對多關係)
此外,我不願意使用投影作爲產品類有其他實體急切地提取。例如,產品類具有品牌實體。 (多對一)。
如果可能,我想要最小數量的投影代碼。
產品類
@Entity
public class Product {
@Id
@GeneratedValue
private long id;
private String name;
@OneToMany(mappedBy = "product")
private Review review;
@ManyToOne
private Brand brand;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Review getReview() {
return review;
}
public void setReview(Review review) {
this.review = review;
}
public Brand getBrand() {
return brand;
}
public void setBrand(Brand brand) {
this.brand = brand;
}
}
評論
@Entity
public class Review {
@Id
@GeneratedValue
private long id;
private String text;
private int rating;
@ManyToOne
private Product product;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getRating() {
return rating;
}
public void setRating(int rating) {
this.rating = rating;
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
}
@NeilStockton按我knowlege我可以使用預測。 groupProperty(「product.id」)沿Projections.avg(「review.rating」),然後我可以按平均審覈進行排序。但我必須在投影中添加每個字段。 我的要求很簡單,我想要產品列表,並希望按他們的評級平均排序。 1產品可能有多個評級 – Piyush
,在這種情況下,這不是JPA Criteria API,因此刪除了JPA標記。 –
@NeilStockton好的。你能幫助我使用Hibernate Criteria來獲得上述HQL。 或者如果JPA標準有可能,那麼它也會有幫助。 – Piyush