在JPQL中我想做的地方:
book.id like lower(:search)
问题:book.id
是Long
,但:search
参数是字符串。上述内容是否会按原样运行,或者我需要明确地将book.id
转换为String
,如果是这样,我该怎么做?
答案 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列上使用任何索引。