Spring 数据查询无法正常工作,因为该字段的名称中包含 Or。字段名称是 - approvedOrRejectedBy

Spring data query not working properly, because the field is having Or in the name. Field name is - approvedOrRejectedBy

Spring 数据查询无法正常工作,因为字段中有 Or

字段是String approvedOrRejectedBy。因此,在编写查询时,它与默认的 Or.

混淆了

我写的查询是:

List<Object> findAllByTimeStampBetweenAndCameraSlugInAndApprovedOrRejectedBy(long startTime, long endTime, List<String> cameraSlugs, String id);

由于字段名称中存在 Or,因此会引发错误。关于如何解决此问题的任何建议或解决方法,除了更新文件名和数据库映射之外。

尝试使用 JPQL 编写自定义查询,例如 @Query 注释。请看

https://www.baeldung.com/spring-data-jpa-query

按方法名称查询 将从名称中解释某些关键字:

由于您的 field/property 似乎命名为 approvedOrRejectedBy 您可以通过以不同方式命名对象 属性 并使用给定的映射数据库列名称对其进行注释来解决,例如@Column(name "ApprovedOrRejectedBy").

@Column(name "approvedOrRejectedBy")
String reviewedBy;

那么你的查询方法可以改写为

List<Object> findAllByTimeStampBetweenAndCameraSlugInAndReviewedBy(long startTime, long endTime, List<String> cameraSlugs, String id);

或者,由于方法名称变得难以阅读,您可以缩短名称并在 @Query 注释上指定 SELECT,如下所示:

@Query("SELECT * FROM entityOrTable x WHERE x.timeStamp BETWEEN ?1 AND ?2 AND x.cameraSlug IN ?3 AND x.approvedOrRejectedBy = ?4")
List<Object> findByIntervalCameraSlugInAndReviewedBy(long startTime, long endTime, List<String> cameraSlugs, String id);

另请参阅:

  • Spring-Data-Jpa Repository - Underscore on Entity Column Name