如何在java

时间:2015-05-27 06:45:58

标签: java mongodb spring-mvc spring-data-mongodb

我被困在这里,我想保留用户的地址为嵌入式文件。但在那里,它正在数据库中创建另一个地址表。所以我想要一个表“用户”,在里面,我希望我的嵌入式文档像“地址”。什么是用户的域名设计?。

现在,我的用户域是

class User{
String name;
Address adress;
}

我的地址域是

class Address{
   String city;
}

我的控制器是

@RestController
@RequestMapping("/api/v1")
public class UserController {
public Map<String, Object> saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return ResponseHandler.generateResponse("User registerted successfully", HttpStatus.ACCEPTED, false, null);
    }

}

我的服务是

public void saveUser(User user){
        Address a = new Address();
        a.setCity("delhi");
User user = new User();
user.setAddress(a);
        userDao.save(user);
    }

我想结果是在数据库中,而不是单独的地址表。我正在使用spring-data-mongotemplate for this.how我可以这样做吗?

user{

  address:[{},{}] // multiple address could be
}

2 个答案:

答案 0 :(得分:1)

也许是这样的?

User.Address address = new User.Address("NY");
user.setAddress(address);
mongoTemplate.save(user);

在控制器中:

{ name : "userName", addresses : [ { city : 'NY' } ] }

基本上,从json解析User应该可以工作:

{{1}}

并且您不必将Address类嵌入到User类中。只需在User和ebmed Address对象中添加@Document即可。

答案 1 :(得分:0)

在用户中使用@Document注释,两者都必须实现Serializable

问候。