2017-04-09 7 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의 == 현재 플레이어. 나는 이것에 대한 MongoRepository을 사용 :

내가 오류 아래 검색 findByPlayerId 방법을 실행 한
public interface MatchRepository extends MongoRepository<Match, String> { 

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

: 나는 오류 메시지의 끝 부분에 이상한 0 문자를 발견

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

: "0}]}

나는 또한 몇 가지 해결 방법을 만들었고 두 번째 방법 인수로 동일한 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 부트 버전 이후 또는 스프링 몽고 1.10.1 이후를 사용해보십시오.

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

+0

완벽한 1.5.2로 업그레이드 한 후 예상대로 작동합니다. 도와 줘서 고마워. –