title: Possible to query by key instead of value in Hazelcast (using Predicates)?
body: <p>In Hazelcast, is it possible to query an IMap based on attributes of a key instead of the values?  All the Hazelcast examples show querying by value.  E.g., for a map of employees with keys that are strings:</p>
  
  <pre><code>IMap&lt;String, Employee&gt; employees;
  </code></pre>
  
  <p>The typical search predicates then search based on employee attributes (name, salary, etc).  But my case uses more complex keys, such as:</p>
  
  <pre><code>IMap&lt;DataAttributes, DataValue&gt; myData;
  </code></pre>
  
  <p>So if DataAttributes has fields such as:</p>
  
  <pre><code> class DataAttributes {
       String theDescription;
       Date   theStartTime;
       public String getDescription() { return theDescription; }
       // etc....
   }
  </code></pre>
  
  <p>I want to write a predicate that can query by the keys, to return an appropriate DataValue object.  This does not work:</p>
  
  <pre><code>Predicate pred = Predicates.equal("description", "myDescription");
  myData.keySet(pred);  // Throws IllegalArgumentException: "There is no suitable accessor for..."
  </code></pre>
  
  <p>I could roll-my-own as suggested in <a href="https://stackoverflow.com/questions/28591381/using-predicate-to-search-a-keyset-in-hazelcast">this answer</a>, but I'd rather use an out-of-the-box solution if I can.</p>
  
  <p>It doesn't matter if I wind up using the Criteria API, or the Distributed SQL Query API.  Any working query would be great.  Bonus points for a solution that works on nested attributes (i.e.: DataAttributes <code>theStartTime.getYear()</code>).</p>