> Thanks for your question! Could you please provide doc references where you > found that it should be possible?
https://ignite.apache.org/docs/latest/key-value-api/binary-objects#enabling-binary-mode-for-caches > The following classes are never converted (e.g., the toBinary(Object) method > returns the original object, and instances of these classes are stored > without changes): … > Maps, collections and arrays of objects (but the objects inside them are > reconverted if they are binary) > 14 февр. 2023 г., в 11:22, Николай Ижиков <[email protected]> написал(а): > > 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. >
