0
我目前对JPA 2和Typed Query有一些小问题。 我在我的项目中使用LIKE子句创建了一个搜索特性,但是当我尝试搜索像“marina”这样的字符串时它没有任何作用,它只在我输入“marin”时才起作用,即使在数据库中存在名称码头。JPA 2中的Like子句TypedQuery仅适用于某些名称参数,对于其他名称不适用
这是我的代码:
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);
因此,没有人知道问题出在哪里?
我不知道它是否有帮助,但是您应该在查询字符串中使用%字符,而不是参数中,因为参数会被转义。 – dpassy
只是一个评论,使用'StringBuilder'的要点是*不*连接像这样的字符串:'str1 + str2 + ...'。改用[append()](https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#append(java.lang.CharSequence))方法。 – dic19
,如果修复%does not work,然后查看日志中调用的SQL,并且它应该显示你的错误 –