类似于JPA中对enum类型列的查询



我想对枚举列执行like查询,如下所示:

@Repository
public interface StudentRepository extends JpaRepository<Student, String> 
{
  @Query("SELECT u FROM Student u WHERE u.house LIKE :namePrefix% ")
  Page<Student> getStudentWithMatchingHouseNamePrefix(@Param("namePrefix")
                                                                   String namePrefix,
                                                               Pageable pageable);
}

Student实体如下:

@Entity
@Table(name = "students")
public class Student implements Serializable {
  private static final long serialVersionUID = 1L;
  @Id
  @NotNull
  @Enumerated(EnumType.STRING)
  @Column(name = "house", unique = true, nullable = false)
  private House house;
  ...
}

我无法理解如何在不修改底层实体的情况下编写查询。

编辑

现在我写的查询如下:

@Query("SELECT u FROM Student u WHERE CONCAT(u.house,'') LIKE :namePrefix%")

但即使在房子有多个条目之后,我也会得到所有查询的空列表。

尝试使用concat

SELECT u.* FROM Student u WHERE u.house LIKE concat(:namePrefix,'%') 

最新更新