2016-11-26 9 views
0

다른 문제가 있습니다. 재생을 위해 Jongo 플러그인을 사용하여 MongoDB와 함께 Play Framework 2.5를 사용하려고합니다. 우선, Im을 제대로 구현했는지 확실하지 않습니다. 여기에 삽입하고 싶은 클래스 :재생 프레임 워크가있는 Jongo : 삽입하려고 할 때 StackOverflowError

public class User { 
    @Inject public PlayJongo jongo; 

    public MongoCollection users() { 
     return jongo.getCollection("users"); 
    } 

    @JsonProperty("_id") 
    public ObjectId id; 

    public String firebaseID; 

    public String name; 

    public User(){} 

    private User(String firebaseID, String name, ApplicationLifecycle appLifecycle, Environment env, Configuration conf){ 
     this.jongo = new PlayJongo(appLifecycle, env, conf); 
     this.firebaseID = firebaseID; 
     this.name = name;); 
    } 

    public User createUser(String firebaseID, String name, ApplicationLifecycle appLifecycle, Environment env, Configuration conf){ 
     User user = new User(firebaseID, name, appLifecycle, env, conf); 
     user.insert(); 

     return user; 
    } 

    public void insert() { 
     users().insert(this); 
    } 
} 

는 그리고 내 응용 프로그램 컨트롤러는 다음과 같이 수행합니다 플레이 프레임 워크에

@Inject public ApplicationLifecycle appLifecycle; 
@Inject public Environment env; 
@Inject public Configuration conf; 
@Inject private User _User; 
.... 
public Result login(...){ 
... 
User user = _User.createUser(...); 
... 
} 
.... 

임 새로운 정지를 내가 어떻게 분사 시스템이해야 얻을 매우 해달라고 사용하십시오. 그래서 만약 누군가가 나를 계몽하고 싶다면 그/그녀는 자유로울 수 있습니다. :) createUser 메쏘드로 새로운 사용자를 생성하면 (그리고 새로운 클래스를 삽입하려고 시도합니다) StackOverflowError는 끝없는 체인에 의해 발생합니다. 재귀 메서드 호출 : debug output

답변

0

나는 내 문제를 해결합니다. 이제 mongo 컬렉션 (authenticate, addUser 등) 및 실제 데이터 필드 (성, 성, 전자 메일 등) 만 포함하는 Users 객체에서 작동하는 메소드가 포함 된 UsersRepository를 만들었습니다.

그 후에 나는 나의 컨트롤러에 UsersRepository를 주입 할 수 있으며 그 모든 인스턴스를 어디에서나 사용할 수 있습니다. 그렉 Methvin, 기술 리드에

덕분에 -이 또한 당신을 도울 수 있다고 생각

프레임 워크

을 재생합니다.