Hi Valentin, Other word, are you agree with me? My point that we always must use binary representation if binary marshaller enable.
On Wed, Apr 12, 2017 at 10:24 AM, Valentin Kulichenko < [email protected]> wrote: > Hi Dmitry, > > I can't advise a lot on implementation details, but generally I don't think > that CacheJdbcPojoStore should ever work with POJO classes in case binary > marshaller is enabled. It should always work directly with binary objects > even if POJOs are on server classpath, and switch to POJOs only when other > marshaller is used. > > Makes sense? > > -Val > > On Tue, Apr 11, 2017 at 12:06 PM, Dmitriy Govorukhin < > [email protected]> wrote: > > > Hi all, > > > > I found problem related to CacheJdbcPojoStore. If try to load data, with > > enabled binary marshaller, > > error may occur. Problem in entryMappings (this map helps resolve stored > > type when data loading). > > If binary marshaller disable we just put entry with java type in this > map, > > if enable we put java type + binary type. > > > > ...... > > > > checkTypeConfiguration(cacheName, valKind, valType, > > type.getValueFields()); > > > > entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, > type, > > keyKind, valKind, sqlEscapeAll)); > > > > // Add one more binding to binary typeId for POJOs, > > // because object could be passed to store in binary format. > > if (binarySupported && keyKind == TypeKind.POJO) { > > keyTypeId = typeIdForTypeName(TypeKind.BINARY, keyType); > > > > valKind = valKind == TypeKind.POJO ? TypeKind.BINARY : valKind; > > > > entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, > > type, TypeKind.BINARY, valKind, sqlEscapeAll)); > > } > > > > ....... > > > > > > I think it is wrong, because after we use this map like iterator for > load, > > and final result dependent from which mapping will be first java or > binary. > > > > Collection<String> processedKeyTypes = new HashSet<>(); > > > > for (EntryMapping em : mappings.values()) { > > String keyType = em.keyType(); > > > > if (processedKeyTypes.contains(keyType)) > > continue; > > > > processedKeyTypes.add(keyType); > > > > ..... > > > > I think we must add only binary mapping for user pojo if binary > marshaller > > enable. > > >
