【发布时间】:2020-10-05 01:10:42
【问题描述】:
别忘了查看下面的图片
对象:
1) 问题
2) 标签
关系是多对多
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "question_has_tag",
joinColumns = @JoinColumn(name = "question_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id"))
private List<Tag> tags;
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column
private String name;
@ManyToMany(mappedBy = "tags", fetch = FetchType.LAZY)
@ContainedIn
private List<Question> questions;
MySql 查询如下:
select t.id, t.name, count(question_has_tag.tag_id) as i from tag as t join question_has_tag
on id = question_has_tag.tag_id group by id order by i desc;
需要翻译成JPQL或HQL
主要目标是获取频率最高的标签列表,例如:enter image description here
【问题讨论】:
标签: mysql sql spring-boot hibernate jpa