0

我尝试通过查询获取用户订单:

 @Query(value = "SELECT * FROM ORDERS WHERE USER_ID = ?1 AND CAST(CREATE_AT AS NVARCHAR(100))  LIKE ?2 OR CAST(GRAND_TOTAL AS NVARCHAR(100))  LIKE ?2 OR CAST(STATUS AS NVARCHAR(100))  LIKE ?2"  , nativeQuery = true)
Page<Order> getOrdersByUserSearch(int userID, String searchS, Pageable pageable);

但它总是返回空列表。我在 SQL Server 中运行此代码并且它可以工作(?1 = 2。?2 = '2021-06-26')。如果我尝试更改“不喜欢”而不是“喜欢”它会运行。我不想使用查询(不是本机)、命名查询或规范方法,因为它会产生更多错误。有什么建议吗?

4

1 回答 1

0

SQLlike查询需要%与匹配的值一起。在查询的情况下,ordered parameters我们可以使用:

    @Query("SELECT m FROM Movie m WHERE m.rating LIKE ?1%")
    List<Movie> searchByRatingStartsWith(String rating);

点击这里了解更多信息。

在您的情况下,查询字符串应如下所示:

SELECT * FROM ORDERS WHERE USER_ID = ?1 AND CAST(CREATE_AT AS NVARCHAR(100))  LIKE %?2% OR CAST(GRAND_TOTAL AS NVARCHAR(100))  LIKE %?2% OR CAST(STATUS AS NVARCHAR(100))  LIKE %?2%
于 2021-06-28T11:31:18.307 回答