Агрегатная функция на связанных объектах в jpa + Spring - PullRequest
0 голосов
/ 16 марта 2020

Я хочу, чтобы реализация метода должна была найти все элементы, которые имеют рейтинг ниже, чем передаваемый в качестве аргумента. Использование отзывов, связанных с каждым предметом, для расчета рейтинга предмета.

Ниже приведены мои классы

@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<>();
  }

Я хочу найти все предметы, которые имеют среднюю оценку поставляемого параметра. Среднее значение рейтинга должно быть рассчитано на основе набора отзывов, представленных в элементе сущности

1 Ответ

0 голосов
/ 16 марта 2020
...