2017-04-09 4 views
0

は、私は次のMongoDBエンティティを持っている:春MongoRepository @query JSONParseException

public class Player { 

    @Id 
    private String id; 

    private String username; 

    private int rating; 

    private boolean active; 
} 

public class Match { 

    @Id 
    private String id; 

    @DBRef 
    private Player playerOne; 

    @DBRef 
    private Player playerTwo; 
} 

私は、すべてのプレイヤーのマッチを取得しよう。それは例えば、私は現在のプレーヤーを持っており、リストに一致する==一致playerOneの== 現在のプレーヤーまたは playerTwoため現在のプレーヤー返さなければならないことを意味します。私は、エラーの下に取得しfindByPlayerId方法を実行したら

public interface MatchRepository extends MongoRepository<Match, String> { 

    @Query(value = "{'$or': [{'playerOne.id': ?0}, {'playerTwo.id': ?0}]}") 
    List<Match> findByPlayerId(String playerId); 
} 

Caused by: com.mongodb.util.JSONParseException: {'$or': [{'playerOne.id': "58ea191756a4302290fff9b1"}, {'playerTwo.id': "58ea191756a4302290fff9b1"0}]}

を私はエラーメッセージの最後には奇妙な0文字に気づいた:"0}]}

私はこのためにMongoRepositoryを使用しました

私はまた、いくつかの回避策を講じて、第2の方法引数として同じplayer.idを渡し、それはfi ne:

@Query(value = "{'$or': [{'playerOne.id': ?0}, {'playerTwo.id': ?1}]}") 
List<Match> findByPlayerId(String playerId, String palyerId2); 

最初のアプローチでJSONParseExceptionが返される理由はありますか?

+0

使用しているスプリングブートまたはスプリングデータのバージョンのバージョンは? –

+0

私は春のブート1.5.1.RELEASEを使用します。 –

答えて

0

この変更をカバーするチケットはここにあります。それが解決され、リリースされました。起動バージョン1.5.2以降、またはmongo 1.10.1以降のバージョンを試してください。

https://jira.spring.io/browse/DATAMONGO-1603

+0

パーフェクト、1.5.2へのアップグレード後、期待通りに動作します。ご協力ありがとうございます。 –

関連する問題