将Long与String进行比较

时间:2014-11-20 16:25:22

标签: jpa jpql jpa-2.1

在JPQL中我想做的地方:

book.id like lower(:search)

问题:book.idLong,但:search参数是字符串。上述内容是否会按原样运行,或者我需要明确地将book.id转换为String,如果是这样,我该怎么做?

2 个答案:

答案 0 :(得分:1)

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

book.id = :search

然后     

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

通常,处理数字比字符串快。

答案 1 :(得分:1)

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

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

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