【问题标题】:Like query on column of type enum in JPA像查询 JPA 中枚举类型的列
【发布时间】:2020-07-22 10:53:11
【问题描述】:

我想对枚举列执行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%")

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

【问题讨论】:

    标签: mysql hibernate jpa spring-data-jpa


    【解决方案1】:

    尝试使用 concat

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

    【讨论】:

    • 感谢您的回复。这不起作用,正在出现异常。我不得不稍微修改一下以摆脱这个异常。现在,正如我在 OP 中提到的,我得到了所有查询的空列表。
    • 似乎 .. 很奇怪 .. 更新您的问题添加适当的数据样本和预期结果 ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多