如何在加入表格视图以删除重复项的同时,在JPA条件中实施子查询

时间:2019-04-03 07:16:46

标签: sql hibernate jpa jpa-criteria

我正在处理一个聚合查询,在该查询中我们有两个名称分别为Task和Member的表视图。

对于成员视图,我们可以重复。即:成员视图的id字段不是唯一的。

因此,当我们进行分组依据以在“成员”视图中查找具有任务名称和属性的组合时,它将无法按预期工作。 在这种情况下,我用SQL编写了一个查询以删除重复项,该查询在下面添加。

SELECT t.task_name   AS task, 
       m.member_name AS memberName, 
       Count(*) 
FROM   task t 
       JOIN (SELECT DISTINCT id, 
                             member_name 
             FROM   member) m 
         ON t.member_id = m.id 
GROUP  BY task, 
          memberName

现在,我想知道如何将上面使用的JOIN转换为JPA标准API。

此查询是否可以通过JPA标准完成?

相同的JPA实体如下所示。

任务实体:-

@Entity
@Table(name = "Task")
public class Task {
@Column(name="id")
private Integer id;
.....
@ManyToOne
@JoinColumn(name = "id")
private Member member;

......
}

成员实体:-

    @Entity
    @Table(name = "Member")
    public class Member {
    @Column(name="id")
    private Integer id;
    @Column(name="member_name")
    private String name;
    ......
    ......
    }

如果不是这样,我想知道一种替代方法,该方法可以在使用GROUP BY子句时忽略重复项,该子句也可以与JPA一起使用。

我将非常感谢您的帮助。

0 个答案:

没有答案