【问题标题】:Spring Mongo Exception - Customizing field name for id property not allowed! Custom name will not be consideredSpring Mongo 异常 - 不允许自定义 id 属性的字段名称!不考虑自定义名称
【发布时间】:2014-08-04 12:04:13
【问题描述】:

我在一个项目上使用 Spring-Data-Mongo 已经有一段时间了,没有任何问题。在上次 POM 更新中,我开始在日志文件中看到以下异常:

警告:2014 年 8 月 4 日 13:55:24 org.springframework.data.mongodb.core.mapping.BasicMongoPersistentProperty - 不允许自定义 id 属性的字段名称!自定义名称将不予考虑!

它没有提供有关此问题出现在哪里的任何线索,因此我们一无所知。随着对应用程序的调用,它会重复几次。我们确实在这里找到了它的起源:https://github.com/spring-projects/spring-data-mongodb/blob/11417144bd3574c35af06fde3a3c2e56a1dd5890/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java#L85

有什么想法吗?

编辑: 为感兴趣的人添加了示例类:

@Document(collection="Account")
public class Account {
    ....
    @Id
    private String id = null;
    ....
}

【问题讨论】:

  • 不提供课程链接,贴出代码。另外,向我们展示您的代码而不是 Spring 的代码如何?
  • 我无法发布完整的项目代码! Spring 产生的异常并没有提供任何关于哪个字段等的线索。贡献者:你能在下一个版本的异常中添加一些东西吗? @John B - 请删除您的反对票,因为它在这种情况下无关紧要。
  • 发布示例代码,展示您如何在班级中定义 ID 字段。
  • 我有几十节课,没有问题。
  • @checklist 我同意 - 一个更具描述性的错误消息在这里会有很长的路要走。我必须通过在 spring-data-mongodb 代码中设置调试器断点来跟踪我的错误

标签: java spring spring-data-mongodb


【解决方案1】:

我听了上面漂亮的 cmets 并在 .我很快发现我的一个班级正在使用以下内容:

@Id
private String Id;

注意 ID 而不是 id。一旦更改,警告就会消失。

我完全支持让 spring-data 提供正确报告而不是简单的警告的建议。

【讨论】:

  • 是的 - 我的问题是一个类似的微妙问题。该警告实际上在我的代码中检测到了一个错误,它只是没有帮助说明在哪里
【解决方案2】:

我的想法是您正在尝试在同一字段上使用 @Id@Field。这是不允许的,因为 Mongo 中的 id 字段必须称为 _id。由于您没有发布代码,因此很难说出更多信息。

【讨论】:

  • 这也是我的想法。但是我们使用@Field 的唯一地方是在 Spring-Data-Solr 文档上。我也尝试过删除这些,但异常并没有消失。
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 2018-05-08
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
相关资源
最近更新 更多