title: Why does STS warn me about non matching parameters?
body: <p>I am using Spring Data Jpa and created a <code>JpaRepository</code> for my <code>User</code> class.
  The repository works but Spring Tool Suite gives me a warning for one method.
  Following are examples of my domain model classes and the repository:</p>
  
  <p><strong>User:</strong></p>
  
  <pre><code>@Entity
  public class User {
  
      @Id
      @GeneratedValue
      private long id;
  
      private String username;
  
      @ManyToMany
      @JoinTable( ... )
      private Set&lt;Role&gt; roles = new HashSet&lt;&gt;();
  
      // Getters &amp; setters
  
  }
  </code></pre>
  
  <p><strong>Role:</strong></p>
  
  <pre><code>@Entity
  public class Role {
  
      @Id
      @GeneratedValue
      private Long id;
  
      private String name;
  
      // Getters &amp; setters
  
  }
  </code></pre>
  
  <p><strong>UserRepository:</strong></p>
  
  <pre><code>public interface UserRepository extends JpaRepository&lt;User, Long&gt; {
  
      List&lt;User&gt; findByRoles(Set&lt;Role&gt; roles);
  
  }
  </code></pre>
  
  <p>STS marks the method <code>findByRoles()</code> and gives the following message: <code>Parameter type (Set&lt;Role&gt;) does not match domain class property definition (Set)</code>.
  Why do I get this warning?</p>