当前位置: 首页 > 知识库问答 >
问题:

mongodb java POJO不返回id

丁经略
2023-03-14

我是MongoDB的新手,在这里有点疯狂。我正在使用最新的mongo java驱动程序版本和dropwizard。

我使用POJO向DDBB写入数据,这很有效。但是,在尝试获取元素时,我没有获得实际的\u id。以下是我尝试的内容:

DDBB文档

{
   _id:603c249cbb33487d9baa49f8,
   name:"John"
}

人物类

public class Person {

    @BsonProperty("_id")
    @BsonId
    private ObjectId id;

    @NotNull
    @JsonProperty
    private String name;

}

返回值:

{
    "id": {
        "timestamp": 1614554268,
        "counter": 11160056,
        "machineIdentifier": 12268360,
        "processIdentifier": 32155,
        "timeSecond": 1614554268,
        "time": 1614554268000,
        "date": 1614554268000
    },
    "name": "John"
}

如您所见,它不会返回实际的id(例如603c249cbb33487d9baa49f8)。我尝试将id设置为字符串,但我得到的错误是解码“Person”失败。解码“\u id”时出错:仅当CurrentBSONType为STRING时才能调用readString,而当CurrentBSONType为OBJECT\u id时不能调用readString。

我跟着几个向导,在这里搜索了一些问题,但是似乎没有什么有用的。

任何帮助都非常感谢!

共有2个答案

益承颜
2023-03-14

您只需使用MongoId,而不用BsonId

public class Person {

    @MongoId
    private String id;

    @NotNull
    @JsonProperty
    private String name;

}
司马宏茂
2023-03-14

您不需要使用BsonId,只需使用Id,Id字段的数据类型应为字符串。在这种情况下,您将获得mongo生成的12位Id。

public class Person {

    @Id
    private String id;

    @NotNull
    @JsonProperty
    private String name;

}
 类似资料:
  • 问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是

  • 我刚刚开始学习Javascript,现在只是学习一些基本的东西。但问题是我真的不明白如果这个switch语句如何返回 null null 还有人看到问题了吗? 如有任何帮助,我们将不胜感激!

  • 我注意到,如果没有where(),returning()操作不可用。这是故意的吗? 这项工作: 这不起作用: 我应该考虑这个“黑客”吗?

  • 这三个函数的返回类型提示有什么不同吗? 他们都应该有< code>- 提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 问题答案: 有很多原因不回来。 但这通常归结为以下事实:执行的命令不会退出。 同样,这可能有很多原因。 一个普遍的原因是该过程产生了一些输出,而你没有从适当的流中读取。这意味着一旦缓冲区已满,进程就会被阻塞,并等待你的进程继续读取。你的进程依次等待另一个进程完成(之所以不会,是因为它等待你的进程,…)。这是一个典型的僵局情况。 你需要不断从流程输入流中读取内容,以确保它不会被阻塞。