2016-10-20 8 views
0

I가 다음 MongoDB를 저장소MongoRepository 사용자 정의 아이디

public interface TeamRepository extends MongoRepository<Team, TeamId> { 
    .... 
} 

그리고 다음 클래스 :

public abstract class DbId implements Serializable { 
    @Id 
    private final String id; 

    public DbId(final String id) { this.id = id;} 

    public String getId() { return id;} 
} 

public class TeamId extends DbId { 

    public TeamId(final String id) { 
     super(id) 
    } 
} 

당신이 볼 수 있듯이, 나는 저장소에 대한 사용자 정의 ID처럼이 (내가 대신 MongoRepository이 MongoRepository와 같은 것). 그러나 Team 객체를 저장하려고 할 때 MongoDB가 DBId를 생성하는 방법을 알지 못한다는 오류가 발생합니다. 어떤 단서?

답변

0

MongoDb (또는 모든 데이터베이스)는 문자열 값이 무엇인지 알리지 않고 문자열 ID를 생성하는 방법을 모릅니다.

기본값 인 @IdObjectId의 문자열 표현으로 MongoDB에서 자동 생성 될 수 있습니다.

** 예를 들어 문자열 (serialisable)로 변환 : :

@Override 
public String toString() { 
    return String.format(
      "TeamID[uniqueString=%s]", 
      myUniqueString); 
} 

을 ** 어떻게 생성하는 당신이 클래스에 문자열 ObjectId가의 종류를 변경하는 경우, 적어도 클래스를 정의 할 필요가있다 이드.

TeamRepository에 메서드를 정의 할 수 있습니다. 즉, save()을 사용하여 문자열 생성 방법을 지정할 수 있습니다. 예를 NumberLong 사용자 ID를 생성하는 getNextSequenceId()를 지정하는 경우 또는 당신은

https://www.mkyong.com/mongodb/spring-data-mongodb-auto-sequence-id-example/

을 확인할 수 있습니다. 바라건대 그 대답은 당신을 안내합니다.