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,並且它應該顯示你的錯誤 –