Hi Sandeep, the equals method does not compare the this.map with that.map but that.dimensions. ...at least in your commented out code. Might this be the problem?
Best, Matthias On Tue, Mar 23, 2021 at 5:28 AM Sandeep khanzode <sand...@shiftright.ai> wrote: > Hi, > > I have a stream that exposes the state for Queryable State. > > I am using the key as follows: > > public class MyKey { > private Long first; > private EnumType myType; > private Long second; > > private TreeMap<String, String> map; > > @Override > public boolean equals(Object o) { > if (this == o) return true; > if (o == null || getClass() != o.getClass()) return false; > MyKey that = (MyKey) o; > boolean isEqual = first.longValue() == that.first.longValue() && > myTime.name().equalsIgnoreCase(that.myTime.name()) && > second.longValue() == that.second.longValue();// && > // map.equals(that.dimensions); > return isEqual; > } > > @Override > public int hashCode() { > int result = first != null ? first.hashCode() : 0; > result = 31 * result + (myType != null ? myType.name().hashCode() : > 0); > result = 31 * result + (second != null ? second.hashCode() : 0); > // result = 31 * result + (map != null ? map.hashCode() : 0); > return result; > } > > } > > > If I only set the first three members for the key class, then the key > lookup works correctly. > > If I add the TreeMap, then the lookup always errors with the message; “No > state found for the given key/namespace”. > > What am I dong wrong with the TreeMap as a member in the Key class for > equals/hashcode? > > Thanks, > Sandeep >