Теперь я считаю количество тем примерно таким:
Long countByViewOnTopicId(Long topicId);
Это эквивалентно запросу SQL
select count(*) from views where topic_id = ?
Это дает мне количество всех просмотров, но мне нужно посчитать количество уникальных пользователей. Мне нужен JPA эквивалент запроса ниже:
select count(distinct user_id) from views where topic_id = ?
Я могу использовать аннотацию @Query
, но я пытаюсь написать меньше пользовательских SQL в проекте. Как ниже:
Long countDictinctUserIdByViewOnTopicId(Long topicId);
Обновление:
`Ниже детали входа:
@Entity
@Table(name = "views")
public class Views {
@Id
@GeneratedValue
private Long id;
@NotNull
@Column(name = "user_id", insertable = false, updatable = false)
private Long userId;
@JoinColumn(name = "user_id")
@ManyToOne
private User user;
@NotNull
@Column(name = "topic_id", insertable = false, updatable = false)
private Long topicId;
@JoinColumn(name = "topic_id")
@ManyToOne
private Topic topic;
@NotNull
@Column(name = "action_type")
@Enumerated(EnumType.ORDINAL)
private ActionTypes actionType;
Getter, Setter...