JPA 2 TypedQuery 中的 Like 子句仅适用于某些名称参数,而其他则不适用

Like clause in JPA 2 TypedQuery works only for some name params and for others not

我目前在使用 JPA 2 和类型化查询时遇到一点问题。 我正在使用 LIKE 子句在我的项目中创建搜索功能,但是当我尝试搜索像 "marina" 这样的字符串时它不起作用,它仅在我键入 "marin" 时起作用,即使存在于数据库名称 marina.

这是我的代码:

StringBuilder builder = new StringBuilder("select u from User u"
                + " where (u.login LIKE :regex OR u.fullname LIKE :regex)"
                + " AND (u.status <> :status)"
                + " order by u.fullname");

        TypedQuery<User> query = jpaAPI.em().createQuery(builder.toString(),User.class);
        query.setParameter("status", statusTypeDeleted());
        query.setParameter("regex", "%"+regex+"%");
        query.setFirstResult(init);
        query.setMaxResults(end);

所以,有人知道问题出在哪里吗?

好的。我现在解决了这个问题。 问题出在这一行:

query.setFirstResult(init);

我传递给这个方法的值是 1 而不是 0。只存在一个名为 "marina" 的实体,查询结果什么都没有,因为第一个结果应该是 0。