【问题标题】:how to disambiguate using @DocumentField in spring data mongoDB如何在spring data mongoDB中使用@DocumentField消除歧义
【发布时间】:2014-10-17 12:15:08
【问题描述】:

在尝试使用 Spring-Data MongoDB 将 Object 保存到 mongo DB 时,我遇到了这个异常。

Ambiguous field mapping detected! Both <child class field> and <parent class field> map to the same field name <field name>! Disambiguate using @DocumentField annotation!

我在子类中隐藏了一个字段,这导致了问题。但这对我来说隐藏在超类中声明的字段是必不可少的。我在任何地方都找不到 @DocumentField 注释。我该如何继续?有没有其他解决办法?

【问题讨论】:

  • 我有同样的问题,因为我想在 mongodb 和 neo4j 中存储基本类型。你解决了这个问题吗?

标签: spring-data spring-data-mongodb


【解决方案1】:

对于那些由于另一种形式的Ambiguous field mapping detected! 错误而到达这里的人(如我)与 OP 不太一样,请考虑您的子班甚至可能根本不需要字段,答案由@sparm 可以改为:

public class Parent {
    private String myField;
    public getMyField() {
        return myField;
    }
}

@Document(collection = "children")
public class Child extends Parent {

    public getMyField() {
       super.getMyField();
    }

}

【讨论】:

    【解决方案2】:

    我认为这是异常中的错误。您需要改用@Field 并为参数指定一个不同的名称:

    public class Parent {
        private String myField;
    }
    
    @Document(collection = "children")
    public class Child extends Parent {
        @Field("childField")
        private String myField;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多