Spring Data JPA聚合组按时间段

时间:2016-03-26 16:38:39

标签: mysql hibernate jpa spring-data spring-data-jpa

目前我使用Spring Boot和AngularJS开发了一个小型电子商务应用程序。对于我的数据访问层,我使用Spring Data JPA和MySQL-DB。我的下一步是,我想为特定产品绘制一些统计数据。例如:特定产品的评级如何随着时间的推移而发展。所以我想指定一段时间(例如01.2016 - 03.2016),然后制定一个查询,返回10或15个时间点(在该范围内)与此期间评论的平均评分。所以我可以从中绘制图表。

我找到了Spring Data的方法来获得一个句点的平均值(在x和y之间),但是我必须对数据库进行10次查询(对于每个点)。所以我想知道,如果可以使用弹簧数据来制定查询,该查询将固定数量的子时段中的时间段分开,并获得每个子时段内客户评级的平均值?如果是,我该如何实现?

我的数据模型的摘录如下所示:

@Entity
@Table(name = "product_placement")
public class ProductPlacement implements Serializable{

   private static final long serialVersionUID = 1L;

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "product_placement_id")
   private long id;

   @Column(name = "title")
   private String title;

       ...

   @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="productPlacements")
   private Set<CustomerReview> customerReviews;

}


@Entity
@Table(name = "customer_review")
public class CustomerReview implements Serializable{

   private static final long serialVersionUID = 1L;

   @Id
   @Column(name = "customer_review_id")
   private String reviewIdentifier;

    ...

   @Column(name = "rating")
   private Integer rating;

   @Column(name = "dateOfCreation", nullable=true, unique=false)
   private LocalDateTime dateOfCreation;

   @JsonBackReference
   @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   @JoinTable(
        name = "review_to_product",
        joinColumns = @JoinColumn(name = "customer_review_id"),
        inverseJoinColumns = @JoinColumn(name = "product_placement_id")
        )
   private Set<ProductPlacement> productPlacements;
}

谢谢!

0 个答案:

没有答案