どのように投影内のネストされたエンティティを含む完全なエンティティを追加できますか?投影内のネストされたエンティティを持つ完全なエンティティを追加する
問題は、指定されたHQLをCriteria APIに変換する必要があります。
SELECT p FROM Product p LEFT JOIN p.reviews r GROUP BY p ORDER BY r.rating ASC
1製品には多くのレビューがあります。 (1対多の関係)
プロジェクションを使用することには消極的です。プロダクトクラスには、熱心に取り出される他のエンティティがあります。製品クラスにはブランドエンティティがあります。 (多対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。 Projections.avg( "review.rating")に沿ってgroupProperty( "product.id")を作成し、レビューの平均で並べ替えることができます。しかし、私は各フィールドを投影に追加する必要があります。 私の要件は簡単です。私は製品のリストを希望し、それらのレーティングの平均で注文したいと思います。 1製品には多くのレーティングがある可能性があります。 – Piyush
この場合、JPA Criteria APIではないため、JPAタグを削除します。 –
@ NeeStockStock Ok。上記のHQLのためのHibernate Criteriaを手伝ってもらえますか? JPA基準で可能な場合は、それも役立ちます。 – Piyush