0

I was working on an aggregation query where we have two table views with name Task and Member.

For the Member view we can have duplicates. ie: id field of member view is not unique.

So when we do group by to find combinations with task name and an attribute in Member view it won't be working as expected. In this condition I've formulated a query in SQL to remove duplicates which is added below.

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

Now I want to know how we can convert the JOIN we have used above to JPA criteria API.

Is this query can be done through JPA criteria.

JPA Entities for the same is given below.

Task entity :-

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

......
}

Member entity :-

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

If not I would like to know an alternate approach which can ignore duplicates while using GROUP BY clause which can work with JPA as well.

I would really appreciate any help.

Sachin
  • 1,675
  • 2
  • 19
  • 42

0 Answers0