2017-04-06 1 views
0

이 A 급Spring Mongo db를 사용하여 기존 List에 객체를 추가하는 방법은 무엇입니까?

@Document 
class User{ 
private String id ; 
private String name; 
@Dbref 
private List<Socity> Socitys; 
} 

이며,이 클래스 Socity

@Document 
class Socity{ 
private String id ; 
private String name; 
} 

이며,이

public User addUser(User user) { 
    List<Socity> socity = new ArrayList<>(); 
    user.setsocitys (socity); 
    return userRepository.save(user); 
} 

내가 기존 사용자 에 socity를 추가하려면 사용자 추가 기능입니다 나는 이것을 시도하지만 작동하지 않는다.

이 (3210)은 DB에 변경 사항을 지속 userRepository.save(u)를 추가 나머지 서비스 코드의 끝에서

@RequestMapping(value = "up/{id}", method = RequestMethod.POST ,produces = 
"application/json") 
public User addSocityToUser(@RequestBody Socity, @PathVariable String id) 
{ 

    return SocityDAO.addSocityToUser(e, id); 
} 

답변

0

입니다.

ID는 (지속 된 개체이기 때문에) 업데이트됩니다. ID가 없으면 DB에 새로운 객체로 저장됩니다.

+0

덕분에 작동합니다! –

+0

우편 배달부와 함께 휴식 서비스를 테스트하려고 할 때이 오류가 발생합니다. "문서를 읽을 수 없습니다. START_ARRAY 토큰 \ n의 인스턴스를 deserialize 할 수 없습니다. \ n –

+0

에 @Oo 전체 스택 추적없이 코드를보고 대답하기가 어렵습니다. 서비스. 또한 그것은 다른 문제이므로 더 나은 당신이 현재 전체 코드 및 스택 추적을 사용하여 새 질문을 열면. – Tom

0

님은 새로운 socity를 추가 한 후 사용자를 잊어 버리는 것을 잊지 마십시오. 내 업데이트

@Document 
public class Socity { 
    private String id ; 
    private String name; 
} 

@Document 
public class User { 
    private String id; 
    private String name; 
    @DBRef 
    private List<Socity> socitys = new ArrayList<>(); 
} 

그럼 당신은 당신의 ADDUSER() 메소드를 사용할 필요가 없습니다

을 확인하시기 바랍니다. 새로운 사용자를 추가 할 때 당신은 또한 두 개의 저장소

public interface SocityRepository extends MongoRepository<Socity, String> { 
} 

public interface UserRepository extends MongoRepository<User, String> { 
    } 

그리고 당신이 main 메소드에 필요한 필요

userRepository.save(user); 

바로 사용

public static void main(String[] args) { 
ApplicationContext ctx = SpringApplication.run (App.class, args); 
UserRepository userRepository = ctx.getBean(UserRepository.class); 
SocityRepository socityRepository = ctx.getBean(SocityRepository.class); 

User u = userRepository.findOne(""); 
Socity s = socityRepository.save(new Socity("soc1")); 
u.getSocitys().add(s); 
userRepository.save(u); 

}

+0

내 proble 내가 userRepository.save (u) 추가 잊지했습니다. –

+0

내가이 오류가 나타날 때 우편 배달부와 함께 휴식 서비스를 테스트하고 싶습니다 "문서를 읽을 수 없습니다 : START_ARRAY 토큰 \ n의 인스턴스를 역 직렬화 할 수 없습니다 \ n –

관련 문제