使用Spring数据JPA

问题描述

我有以下两个JPA实体

public class User {

  @Id
  @Column(name = "user_id")
  private String id; 
  
  private String userName;
  
  private String courseStatus;
}

public class Course {

      @Id
      @Column(name = "course_id")
      private String id; 

      @ManyToOne
      @JoinColumn(foreignKey = @ForeignKey(name = "user_id"))
      private User user;
     
      private String userStatus

}

我有一个用户名列表(无ID)。我需要根据传递的IN子句将用户表与课程表连接起来,并检查userStatus和CourseStatus是否均为“ VALID”。是否可以在spring数据JPA中的单个查询中做到这一点

解决方法

类似这样的东西

在您的CourseRepository


@Query("select c.user from Course c where c.user.userName in(:userNames) and c.user.courseStatus ='VALID' and c.userStatus='VALID'")
List<User> findAllValidUsers(@Param("userNames") List<String> userNames)