首页 > 解决方案 > 如何选择 ManyToMany 关系为空或 null 的所有行

问题描述

我有两节课

@Entity
public class Program {
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;

      @ManyToMany
      @JoinTable(name = "program_roles",
        joinColumns = @JoinColumn(name = "program_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "program_role_id", referencedColumnName = "id"))
      private Set<ProgramRole> programRoles;

}

@Entity
public class ProgramRole {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
}

我想编写 JPA 查询以选择所有programRoles为空或为空的程序。

标签: spring-data-jpaspring-data

解决方案


您可以使用JpaRepositoryofProgram, Long来实现您的要求。以下应该有效:

@Repository
public interface ProgramRepository extends JpaRepository<Program, Long> {
        List<Program> findByProgramRolesIsEmpty();
    }

此方法将返回所有具有空的 Program 实体,Set<ProgramRole>对于空或 null 至少为 trueSet


推荐阅读