在继承的字段上具有Spring Data的MappingException(检测到模糊字段映射)

时间:2019-04-19 13:25:48

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

以下结果导致MappingException。我需要更改设计吗?

    public class Foo extends Bar {

        // if class == Foo do not send this over the wire
        @JsonProperty(access = Access.WRITE_ONLY)
        public List<X> myList;

    }

    public class Bar {

        // if class == Bar send this over the wire
        public List<X> myList;


    public void methodsThatAccessMyList() {
       // multiple methods exists in here accessing myList
       // also, other classes exist extending bar, 
       //so moving these to the children will result in duplicate code
 }
    }

但是,我需要子类上的json属性,以防止子类通过电线传输该字段。

为了防止模棱两可的映射,我需要更改什么?

  

org.springframework.data.mapping.MappingException:含糊字段   检测到映射!受保护的java.util.List ...和   @ com.fasterxml.jackson.annotation.JsonProperty(index = -1,   访问= WRITE_ONLY,值=“”,默认值=“”,必填= false)受保护   java.util.List ...映射到相同的字段名称...!消除歧义   @Field批注!

1 个答案:

答案 0 :(得分:0)

事实证明,您可以将JsonProperty放在字段的getter上,它将按预期工作。 这样,您无需在扩展类中覆盖字段本身。