Spring Data Mongodb使用对象类型进行收集

时间:2019-02-14 10:55:50

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

新手警报!

两天前我刚刚安装了mongodb并在春季开始创建REST api。

所以我有一个集合userinfo,其中的样本文档看起来像

{"_id":"5c62588e5e1fbc37dc9746d3","name":{"first":"rajan","last":"rawat"},"age":32}

我在集合中将字段名称创建为对象类型。

现在在Java中为其创建实体类

@Document(collection = "userinfo")
 public class UserInfo {

    @Id
    private String id;
    private Name name;
    private int age;
}

类别名称为

public class Name {

    private String firstName;
    private String lastName;
}

在运行API时,我得到的响应是

  

{“ id”:“ 5c62588e5e1fbc37dc9746d3”,“名称”:{“名字”:null,“姓氏”:null},“年龄”:32}

如果我将UserInfo类中的类型更改为类似字符串,

@Document(collection = "userinfo")
public class UserInfo {

    @Id
    private String id;
    private String name;
    private int age;
}

响应更改为

  

{“ id”:“ 5c62588e5e1fbc37dc9746d3”,“名称”:“ {\” first \“:\” rajan \“,   \“ last \”:\“ rawat \”}“,” age“:32}

基本上是集合中对象的字符串表示形式。

我的问题。

  1. 我在mongoDB中设计集合的方式是否有问题。我假设我的用例是引入对象类型的原因。
  2. 如何在Java(即@Document)中映射此集合。我想念什么?我还需要在类名
  3. 中进行配置吗?

1 个答案:

答案 0 :(得分:0)

在文档中,属性名称为“第一个”和“最后一个”,因此在类名称中,您需要使用相同的名称,以便可以通过spring映射对象。

只需尝试:

公共类名称{

private String first;
private String last;

}