t seems you can use name, author pair as a key and price and other properties
as a value like that:
class BooKey
String name;
String author;
}
class BookValue {
int price;
}
IgniteCache<BookKey, BookValue> cache = ignite.createCache(«books»);
cache.put(key, val);
cache.get(key);
> 21 июня 2022 г., в 18:09, Stephen Darlington
> <[email protected]> написал(а):
>
> I don’t understand why can you can't use SQL. “select _val from Book where
> bookName = ? And authorName = ?” would get the value from a partial key.
>
>> On 21 Jun 2022, at 15:14, Saurabh Satardekar <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Hi Stephen,
>>
>> Thank you for replying.
>>
>> In our use case we cannot use sql queries to get desired result. Is there
>> any other way that we can use to plug custom implementation of equals and
>> hashCode method for objects which are going to store in caches?
>>
>> Thank you ,
>> Saurabh Satardekar.
>>
>>
>>
>> On Fri, 17 Jun 2022, 9:42 pm Stephen Darlington,
>> <[email protected] <mailto:[email protected]>>
>> wrote:
>> If you enable SQL on your table, then you can run a query that filters on a
>> subset of the properties. You can also add an index to make the lookup more
>> quickly.
>>
>>> On 17 Jun 2022, at 16:55, Saurabh Satardekar <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>> Respected Sir/Madam,
>>> We have following use case where we have Book class as follows :
>>>
>>> public class Book {
>>>
>>> private int price;
>>> private String bookName;
>>> private String authorName;
>>>
>>> public Book( String bookName, String authorName, int price ) {
>>> this.bookName = bookName;
>>> this.authorName = authorName;
>>> this.price = price;
>>> }
>>>
>>> @Override
>>> public boolean equals(Object o) {
>>> if( this == o ) return true;
>>> if( o == null || getClass() != o.getClass() ) return false;
>>> Book that = (Book) o;
>>> return bookName.equals(that.bookName) && authorName.equals(that.authorName);
>>> }
>>>
>>> @Override
>>> public int hashCode() {
>>> return Objects.hash(bookName,authorName);
>>> }
>>> }
>>>
>>> For the above class we need to compare books by using book name and its
>>> author name only. We don't want to include price while comparing books but
>>> we can't even store that information anywhere else.
>>> So if I have two objects as follows :
>>>
>>> Book book_1 = new Book("Book_1","ABC",100);
>>> Book book_2 = new Book("Book_1","ABC",200);
>>>
>>> For above objects, if I use book_1 object as my cache key and put some
>>> value against it into cache, I am not able to retrieve that value using my
>>> another object book_2 as ignite is not honoring equals method provided on
>>> Book class.
>>>
>>> We have tried implementing Externalizable interface and also by providing
>>> custom implementation of BinaryIdentityResolver interface. Still we are not
>>> getting desired output.
>>>
>>> Note : This is a sample class which we have used to describe a problem, in
>>> reality we are using other classes and we have a valid use case where we
>>> don't want to use all attributes of the class while comparing them for
>>> equality ( in equals and hashCode method ).
>>>
>>> Thank you,
>>> Saurabh Satardekar.
>>
>