Hello.

The trick here is the following line

> car.setInspirations(List.of(new Car(), new Car()));

Ignite serialize as a binary collection only *some* implementation of List 
interface.
Others serialized using standard java serialization.

I rewrite your code and now it’s working as expected:

```
public class SimpleTest extends GridCommonAbstractTest {
    @Test
    public void testGetCarInspirationsWithBinaryapi() throws Exception {
        Ignite ignite = startGrid(0);

        Car car = new Car();
        car.setName("carname");
        car.setWeight(BigDecimal.ONE);

        List<Car> inspirations = new ArrayList<>();

        inspirations.add(new Car());
        inspirations.add(new Car());

        car.setInspirations(inspirations);

        ignite.getOrCreateCache("Sample").put("carname", car);

        IgniteCache<String, BinaryObject> binaryCarCache = 
ignite.getOrCreateCache("Sample").withKeepBinary();

        List<BinaryObject> carInspirations = 
binaryCarCache.get("carname").field("inspirations");

        assertEquals(2, carInspirations.size());
        assertTrue(carInspirations.get(0) instanceof BinaryObject);

        BinaryObject binaryCar = carInspirations.get(0);

        assertNull(binaryCar.field("name"));
    }

    public class Car implements Serializable {
        private String name;
        private List<Car> inspirations;
        private BigDecimal weight;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public List<Car> getInspirations() {
            return inspirations;
        }

        public void setInspirations(List<Car> inspirations) {
            this.inspirations = inspirations;
        }

        public BigDecimal getWeight() {
            return weight;
        }

        public void setWeight(BigDecimal weight) {
            this.weight = weight;
        }
    }
}
```


> 14 февр. 2023 г., в 09:07, Mikhail Pochatkin <[email protected]> 
> написал(а):
> 
> Hi, Dinakar.
> 
> Thanks for your question! Could you please provide doc references where you 
> found that it should be possible?
> 
> вт, 14 февр. 2023 г. в 07:18, Dinakar Devineni <[email protected] 
> <mailto:[email protected]>>:
>> Hi,
>> 
>>  
>> 
>> Appreciate  some help, to  understand  why is  this  failing  and  how  to 
>> correct this.
>> 
>>  
>> 
>> Trying to  read  a  list of  binary  objects form a  composite  data 
>> structure
>> 
>> Here  is the  sample code.  As  per  ignite  documentation this  should be  
>> possible.
>> 
>>  
>> 
>>  
>> 
>> @Getter
>> 
>> @Setter
>> 
>> Public class Car implements Serializable {
>> 
>> private String name;
>> 
>> private List<Car> inspirations;
>> 
>> private BigDecimal weight;
>> 
>> }
>> 
>>  
>> 
>>  
>> 
>> @Test
>> 
>> Public void testGetCarInspirationsWith Binaryapi(){
>> 
>>  
>> 
>> Ignite ignite = Ignition.start();
>> 
>>  
>> 
>> Car car = new Car();
>> 
>> car.setName(“carname”);
>> 
>> car.setWeight(BigDecimal.ONE);
>> 
>> car.setInspirations(List.of(new Car(), new Car()));
>> 
>>  
>> 
>>  
>> 
>> ignite.getOrCreateCache(“Sample”).put("carname”, car);
>> 
>> IgniteCache<String, BinaryObject> binaryCarCache = 
>> ignite.getOrCreateCache(“Sample”).withKeepBinary();
>> 
>>  
>> 
>> // this  line is not  returning list  of  binary objects, rather  returning 
>> desrialize  objects
>> 
>> List<BinaryObject> carInspirations = 
>> binaryCache.get(“carname”).field(“inspirations”);
>> 
>>  
>> 
>> }
>> 
>>  
>> 
>>  
>> 
>> Tech
>> 
>> Java 11
>> 
>> Ignite 2.14
>> 
>>  
>> 
>>  
>> 
>> Thanks
>> 
>> D
>> 
>>  
>> 
> 
> 
> -- 
> best regards,
> Pochatkin Mikhail.

Reply via email to