Thanks for clarifying that. Is there a way to mark a property/field to be excluded when storing?
Humphrey Op wo 22 mrt 2023 om 14:20 schreef Stephen Darlington < stephen.darling...@gridgain.com>: > Ignite doesn’t use your equals or hashCode implementation. Data is stored > as a BinaryObject, and it’s that that is compared for equality. > > On 22 Mar 2023, at 12:14, Humphrey Lopez <hmmlo...@gmail.com> wrote: > > They are in the example only checking the first field when overriding the > equals. And hashCode always returns 1. > > Op wo 22 mrt 2023 om 13:06 schreef Prigoreanu, Alexandru < > prigoreanu.alexan...@anteash.com>: > >> hashCode and equals should depend on the same fields. >> >> On Wed, Mar 22, 2023 at 8:02 AM Humphrey Lopez <hmmlo...@gmail.com> >> wrote: >> >>> Hello, when having a key which equals another key, when trying to >>> retrieve from cache it does not return the expected value. Is this a bug? >>> >>> I have a reproducible below in kotlin but in java we get the same result >>> (test with Ignite 2.10 and 2.14) and java 11 and 19. >>> >>> >>> import org.apache.ignite.Ignition >>> import org.apache.ignite.configuration.CacheConfiguration >>> import org.assertj.core.api.SoftAssertions >>> import org.junit.jupiter.api.Test >>> >>> class MyTest { >>> >>> private val key1 = MyKey("ABC", "DEF") >>> private val key2 = MyKey("ABC", "xxx") >>> >>> @Test >>> fun testEquals() { >>> SoftAssertions.assertSoftly { >>> it.assertThat(key1).isEqualTo(key2) >>> it.assertThat(key1 == key2).isTrue >>> } >>> } >>> >>> @Test >>> fun testWithMap() { >>> val map = mapOf(Pair(key1, "key1")) >>> >>> SoftAssertions.assertSoftly { >>> it.assertThat(map.containsKey(key1)).isTrue >>> it.assertThat(map.containsKey(key2)).isTrue >>> } >>> >>> } >>> >>> @Test >>> fun testWithIgnite() { >>> val ignite = Ignition.start(); >>> val cache = ignite.createCache(CacheConfiguration<MyKey, >>> String>("mycache")) >>> >>> cache.put(key1, "key1") >>> SoftAssertions.assertSoftly { >>> it.assertThat(cache.containsKey(key1)).isTrue >>> it.assertThat(cache.containsKey(key2)).isTrue >>> } >>> } >>> >>> private data class MyKey(val id: String, val type: String) { >>> override fun equals(other: Any?): Boolean { >>> if (other is MyKey) >>> return id == other.id >>> return false >>> } >>> >>> override fun hashCode(): Int { >>> return 1 >>> } >>> } >>> } >>> >>> >