Michael, data colocation work like this: - Ignite caches have partitions assignments so that primary partitions with same ID are assigned to the same physical location (node). - When you put/get data to a cache, Ignite maps value of a field annotated with @AffinityKeyMapped to a partition. - Thus, entries having same value of the @AffinityKeyMapped field go to the same location.
In your example if recordNo and policyNo are equal then the entries will go to the same location.