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.