将长整型与字符串进行比较



在 JPQL 中,在我想做的条件下:

book.id like lower(:search)

问题:book.idLong,但 :search 参数是字符串。上述内容会按原样工作,还是我需要将book.id显式转换为String如果是这种情况,我该怎么做?

我会:search参数转换为Long并将查询条件更改为:

book.id = :search

然后

List<Books> books = em.createQuery("... WHERE book.id = :search")
                      .setParameter("search", Long.valueOf(strSearch))
                      .getResultList();

一般来说,处理数字比字符串快。

您可以在 JPQL 中使用 CAST 语句,如下所示:

CAST(book.id AS string) LIKE lower(:search)

但是使用此解决方案,您将无法在 book.id 列上使用任何索引。

最新更新