title: Jackson bug (or feature!?) when using java.util.Set - mySet.size() is always 1
body: <p>I am using Jackson 2.2.0 and Spring 3.2.0 with Hibernate 4.2.2.</p>
  
  <p>I recently had to send an array of objects via POST to the server:</p>
  
  <pre><code>{"cancelationDate":"2013-06-05",
   "positions":[
     {"price":"EUR 12.00",
      "count":1},
     {"price":"EUR 99.00",
      "count":1}
   ]
  }
  </code></pre>
  
  <p>My classes look like this:</p>
  
  <pre><code>public class Bill extends {
    LocalDate cancelationDate;
  
    Set&lt;Position&gt; positions;
  
    ...
  }
  </code></pre>
  
  <p>and:</p>
  
  <pre><code>public class Position { 
    Integer count;
  
    BigMoney price;
  
    @JsonIgnore
    Bill bill;
  
    ...
  }
  </code></pre>
  
  <p>When I call <code>bill.getPositions().size()</code> it tells me <code>1</code>.</p>
  
  <hr>
  
  <p>If I use <code>List&lt;Position&gt;</code> instead of <code>Set&lt;Position&gt;</code> it works nice. So what's the problem with <code>Set</code>?</p>
  
  <p>Thank you :)</p>
  
  <h2>equals and hashCode:</h2>
  
  <pre><code>public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = (int) (prime * result + ((id == null) ? 0 : id.hashCode()));
      return result;
  }
  
  public boolean equals(Object obj) {
      if (obj == this)
          return true;
      if (!(obj instanceof Position))
          return false;
      Position equalCheck = (Position) obj;
      if ((id == null &amp;&amp; equalCheck.id != null) || (id != null &amp;&amp; equalCheck.id == null))
          return false;
      if (id != null &amp;&amp; !id.equals(equalCheck.id))
          return false;
      return true;
  }   
  </code></pre>