gpt4 book ai didi

java - 使用 Spring JPA 存储库进行不同计数

转载 作者:行者123 更新时间:2023-12-03 12:04:56 25 4
gpt4 key购买 nike

现在我正在计算这样的话题的观点:

Long countByViewOnTopicId(Long topicId);

这相当于 SQL 查询
select count(*) from views where topic_id = ? 

这给了我所有 View 的数量,但我需要计算唯一用户的数量。我需要相当于以下查询的 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...

最佳答案

尝试这个:

criteriaQuery.multiselect(criteriaBuilder.countDistinct(root));

https://en.wikibooks.org/wiki/Java_Persistence/Criteria

关于java - 使用 Spring JPA 存储库进行不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50152267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com