java - 最常用标签的 NamedQuery

标签 java sql jpa jpql

假设我有以下 2 个类(class):

@Entity
class Article {

    @Id
    int id;

    @ManyToMany(mappedBy="articles")
    List<Tag> tags;
}

@Entity
@NamedQueries({
    @NamedQuery(name = "Tag.trends", query = "SELECT t FROM Tag t") // Some magic stuff here..
})
class Tag {

    @Id
    String name;

    @ManyToMany
    List<Articles> articles;
}

现在我想创建一个命名查询来选择最常用的标签。

因此,这将需要一个连接计数和一个排序依据。但我似乎无法弄清楚这一点。

问题: 如何选择最常用的标签?

例如,如果以下文章具有以下标签:

Article: Tags
0: A, B
1: A
2: C
3: A, C

输出

A // 3 times
C // 2 times
B // 1 time

最佳答案

您可以使用类似的东西来实现您想要的目标

SELECT t FROM Tag t ORDER BY SIZE(t.articles) ASC

这将为您带来按文章数量排序的标签列表。

关于java - 最常用标签的 NamedQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36185398/

相关文章:

java - REST Controller 中具有一对多关系的实体的递归 JSON View

java - 如何使用 gwt RequestFactory 机制来持久化 HashMap ( map )?

java - 使用 NumberFormat 具有两位小数的 double 值

java - 为什么开关会回到初始阶段?

java - DisplayTag 导出和链接

java - 不使用 null 将空白标记到数组中

只知道十年/世纪的 sql 存储日期

sql - PostgreSQL:加入 2 个具有最大值的数组

mysql - 如何获取其他表上的元素计数并按其排序

java - 使用 Spring JPA 的多数据源