title: Can not find a deserializer for non-concrete Collection type in Spring data rest
body: <p>I am using spring data rest for my application. When I execute post call. I am getting error</p>
  
  <p><strong>Input payload Syntax:-</strong></p>
  
  <pre><code>{
    "id": 0,
    "name": "string",
    "sortedWeightedSources": {
      "empty": true
    },
    "status": "ACTIVE",
    "weightedSources": [
      {
        "sources": {
          "accountNumber": "string",
          "active": true,
          "configuration": "string",
          "id": 0,
          "name": "string"
        },
        "rate": 0,
        "id": 0,
        "status": "ACTIVE",
        "weight": 0
      }
    ]
  }
  </code></pre>
  
  <p><strong>Request:-</strong></p>
  
  <pre><code>curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/hal+json' -d '{ \ 
     "name": "string"   \ 
   }' 'http://localhost:8082/model1'
  </code></pre>
  
  <p><strong>Error:-</strong></p>
  
  <pre><code>{
    "cause": {
      "cause": {
        "cause": null,
        "message": "Can not find a deserializer for non-concrete Collection type [collection type; class com.google.common.collect.Multiset, contains [simple type, class com.test.model.weightedSources]]"
      },
      "message": "Can not find a deserializer for non-concrete Collection type [collection type; class com.google.common.collect.Multiset, contains [simple type, class com.test.model.weightedSources]]\n at [Source: org.apache.catalina.connector.CoyoteInputStream@628d6cf8; line: 1, column: 1]"
    },
    "message": "Could not read document: Can not find a deserializer for non-concrete Collection type [collection type; class com.google.common.collect.Multiset, contains [simple type, class com.test.model.weightedSources]]\n at [Source: org.apache.catalina.connector.CoyoteInputStream@628d6cf8; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not find a deserializer for non-concrete Collection type [collection type; class com.google.common.collect.Multiset, contains [simple type, class com.test.model.weightedSources]]\n at [Source: org.apache.catalina.connector.CoyoteInputStream@628d6cf8; line: 1, column: 1]"
  }
  </code></pre>
  
  <p>Model1:-</p>
  
  <pre><code>public class Model1 implements Serializable {
  
      int id;
      private String name;
      private Status status;
      private Set&lt;WeightedSource&gt; weightedSources;
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      public int getId() {
          return id;
      }
  
      public void setId(int id) {
          this.id = id;
      }
  
      @Column(name = "name")
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      @Enumerated(EnumType.STRING)
      @Column(name = "status")
      public Status getStatus() {
          return status;
      }
  
      public void setStatus(Status status) {
          this.status = status;
      }
  
      @OneToMany(mappedBy = "model1", fetch = FetchType.EAGER)
      public Set&lt;WeightedSource&gt; getWeightedSources() {
          return WeightedSources;
      }
  
      public void setWeightedSources(Set&lt;WeightedDemandSource&gt; weightedSources) {
          this.weightedSources = weightedSources;
      }
  
      @Transient
      public Multiset&lt;WeightedSource&gt; getSortedWeightedSources() {
          Multiset&lt;WeightedSource&gt; set = TreeMultiset.create();
          if (weightedSources != null) {
              for (WeightedSource weightedSource : weightedSources) {
                  set.add(weightedSource);
              }
          }
          return set;
      }
  
      public void addWeightedSource(WeightedSource weightedSource) {
          weightedSource.setChain(this);
          if (weightedSources == null) {
              weightedSources = Sets.newHashSet();
          }
          weightedSources.add(weightedSource);
      }
  
  
  }
  </code></pre>
  
  <p>Model2:-</p>
  
  <pre><code>public class WeightedSource implements Serializable, Comparable&lt;WeightedSource&gt; {
  Id
      @GeneratedValue(strategy= GenerationType.AUTO)
      private int id;
      @ManyToOne(targetEntity = Source.class)
      @JoinColumn(name = "source_id", nullable = false)
      private Source source;
  
      @JsonIgnore
      @ManyToOne(targetEntity = Model1.class)
      @JoinColumn(name = "model1_id", nullable = false)
      private Model1 model1;
      private int weight;
      private Status status;
      private int hitRate;
  }
  </code></pre>