I see marking the field as Transient Ignite won't serialize it to BinaryObject, is that the way to go?
Humphrey Op wo 22 mrt 2023 om 14:37 schreef Humphrey Lopez <[email protected]>: > 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 < > [email protected]>: > >> 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 <[email protected]> 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 < >> [email protected]>: >> >>> hashCode and equals should depend on the same fields. >>> >>> On Wed, Mar 22, 2023 at 8:02 AM Humphrey Lopez <[email protected]> >>> 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 >>>> } >>>> } >>>> } >>>> >>>> >>
