1

The following results in a MappingException. Do I need to change my design?

    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
 }
    }

However, I need the json property on the child class, to prevent the child class to transport that field over the wire.

What do I need to change to prevent the ambiguous mapping?

org.springframework.data.mapping.MappingException: Ambiguous field mapping detected! Both protected java.util.List ... and @com.fasterxml.jackson.annotation.JsonProperty(index=-1, access=WRITE_ONLY, value="", defaultValue="", required=false)protected java.util.List ... map to the same field name ...! Disambiguate using @Field annotation!

Codehai
  • 524
  • 1
  • 7
  • 27

1 Answers1

2

It turns out you can put the JsonProperty on the getter of the field, it will work as expected. Like this, you don't need to override the field itself in the extending class.

Codehai
  • 524
  • 1
  • 7
  • 27