Я хочу, чтобы реализация метода должна была найти все элементы, которые имеют рейтинг ниже, чем передаваемый в качестве аргумента. Использование отзывов, связанных с каждым предметом, для расчета рейтинга предмета.
Ниже приведены мои классы
@Entity
public class Item {
@Id
@GeneratedValue
private Long id;
@Column(length = 100)
@NotEmpty
private String title;
@Column(length = 200)
private String description;
@OneToMany(mappedBy = "item", cascade = CascadeType.ALL, orphanRemoval = true)
Set<Review> reviews = new HashSet<>();
public Item() {
}
public Item(String title, String description) {
this.title = title;
this.description = description;
}
public Long getId() {
return id;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public Set<Review> getReviews() {
return reviews;
}
}
@Entity
public class Review {
@Id
@GeneratedValue
private Long id;
@Min(0)
@Max(10)
private Integer rating;
@Length(max=200)
private String comment;
@ManyToOne(optional = false)
private Item item;
@ManyToOne(optional = false)
private User author;
}
@Repository
@Transactional
public class ItemRepository {
@PersistenceContext
EntityManager entityManager;
public List<Item> findItemsWithAverageRatingLowerThan(Integer rating) {
return new ArrayList<>();
}
Я хочу найти все предметы, которые имеют среднюю оценку поставляемого параметра. Среднее значение рейтинга должно быть рассчитано на основе набора отзывов, представленных в элементе сущности