2017-10-27 14 views
0

私はJava Springの新しいメンバーです。今日、JPAのCrudRepositoryでクエリを実行しようとしています。私はProjectionsを使用しています。Springデータの投影を使用するJPAフィールドエラー

マイリポジトリ:

@Repository 
public interface UserRepositoty extends CrudRepository<tbl_user, Integer> { 
// search by username 
@Query(value = "select (select l.state from tbl_request_love l where l.senderid = u.userid) as state, u.userid as userid,u.username as username,u.nickname as nickname,u.avatar as avatar" 
     + " from tbl_user u" 
     + " where u.username LIKE CONCAT('%',:username,'%') and u.coupleid is null" , nativeQuery = true) 
List<tbl_user_search> findByUsernameEndWith(@Param("username") String username); 
} 

マイインタフェース:

Could not write JSON: Failed to convert from type [java.lang.String] to type [int] for value 'hihi';
nested exception is java.lang.NumberFormatException: For input string: \"hihi\";
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Failed to convert from type [java.lang.String] to type [int] for value 'hihi';
nested exception is java.lang.NumberFormatException: For input string: \"hihi\"

(through reference chain:
skay.model.api_searchuser[\"result\"]->java.util.ArrayList[0]->com.sun.proxy.$Proxy87[\"userid\"])`

私はStringこれに私のインターフェイスタイプgetUserid();を変更する場合:

public interface tbl_user_search { 
int getUserid(); 
String getUsername(); 
String getNickname(); 
String getAvatar(); 
String getState(); 
} 

私はこのエラーを取得するテストエラーが発生し、新しいjsonを持っています。

{ 
    "state": "Hi", 
    "username": "https://forumhumgeduvn.000webhostapp.com/5skay/man.png", 
    "userid": "Hi Hi", 
    "avatar": "Pending", 
    "nickname": "3" 
} 

しかし、jsonはフィールドを順番に返しません。私はこれが私の間違いだと思う。しかし、私はそれを修正することを知らない。あなたは私のために任意の解決を共有することができます。ありがとうございました!

答えて

1

このようなLIKEを使用してみてください:

" where u.username LIKE %:username% and u.coupleid is null" 

か:不明な列 'u.userid':

" where u.username LIKE %?1% and u.coupleid is null" 

私は新しいバグを持ってみてください。このUsing advanced LIKE expressions

+0

を読みます'フィールドリスト'に表示されます。あなたは私を助けることができますか? phạmtuấ[email protected] –

+0

あなたは、代わりに '状態AS l.state、ユーザーID AS u.userid、ユーザ名AS u.username、ニックネームAS u.nickname、tbl_user U FROMアバター AS u.avatarを選択、このクエリを使用して試すことができますtbl_request_love l WHERE l.senderid = u.userid およびu.username LIKE%?1% AND u.coupleid IS NULL' –

関連する問題