Отличный подсчет с помощью репозитория Spring JPA - PullRequest
0 голосов
/ 03 мая 2018

Теперь я считаю количество тем примерно таким:

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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...