JPA查询@JoinTable

问题描述

场景: 我有两个实体User和Program

@Entity
@Table(name = "user")
public class UserEntity implements Serializable{

   @Id
   public Long id;

   public String firstName;

   public String email;

   @OnetoOne(cascade = CascadeType.ALL)
   @JoinTable(
      name = "user_program",joinColumns = {
         @JoinColumn(name = "user_id",referencedColumnName = "id")  
      },inverseJoinColumns = {
         @JoinColumn(name = "program_id",referencedColumnName = "id")
      }
   )
   public ProgramEntity program;
}

JPQL:

SELECT
   Program.name,COUNT(user.id) AS user_count
FROM UserEntity AS user
INNER JOIN ProgramEntity AS program on ________ GROUP BY Program.name

我试图获取每个程序中的用户数量,但是由于JoinTable(中间表)不是一个实体,所以无法获得结果。谁能建议JPQ连接联接表?

解决方法

您可以使用实体对象加入,不需要'ON'。例如,

SELECT prg.name,COUNT(user.id) AS user_count FROM UserEntity AS user INNER JOIN user.program AS prg GROUP BY prg.name