目前我使用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;
}
谢谢!