Hi, I've found that there is no Short<->SMALLINT mapping in ignite. I see only Short<->INT. Looks like a bug to me, so I've create a ticket [1].
[1] https://issues.apache.org/jira/browse/IGNITE-5779 On Fri, Jul 14, 2017 at 11:58 PM, Roger Fischer (CW) <[email protected]> wrote: > Hello, > > > > there seems to be a problem with mapping between Cassandra numerical types > to Java types. I am using ver. 2.0.0#20170430-sha1:d4eef3c6. > > > > In Cassandra, the column is defined as “smallint”. > > In the Java POJO, the field is defined as “Short” > > In the configuration (QueryEntity), the field is defined as > “java.lang.Short”. > > Nothing was defined as java.lang.Integer. > > > > Loading an object from Cassandra to Ignite (get with cache-miss, or > loadCache()) resulted in the following exception: > > com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not > found for requested operation: [smallint <-> java.lang.Integer] > > > > It seems that the type defined on the Ignite side is not properly > propagated to the Cassandra driver, and Cassandra perceives it as an > Integer. > > > > When I define everything (column and all fields) as int/java.lang.Integer, > then all is well. > > > > I also tried with “tinyint” and java.lang.Byte. In this case the Java > driver tried (and failed) to map to java.nio.ByteBuffer. > > > > Caused by: com.datastax.driver.core.exceptions.CodecNotFoundException: > Codec not found for requested operation: [smallint <-> java.lang.Integer] > > at com.datastax.driver.core.CodecRegistry.notFound( > CodecRegistry.java:679) > > at com.datastax.driver.core.CodecRegistry.createCodec( > CodecRegistry.java:526) > > at com.datastax.driver.core.CodecRegistry.findCodec( > CodecRegistry.java:506) > > at com.datastax.driver.core.CodecRegistry.access$200( > CodecRegistry.java:140) > > at com.datastax.driver.core.CodecRegistry$ > TypeCodecCacheLoader.load(CodecRegistry.java:211) > > at com.datastax.driver.core.CodecRegistry$ > TypeCodecCacheLoader.load(CodecRegistry.java:208) > > at com.google.common.cache.LocalCache$LoadingValueReference. > loadFuture(LocalCache.java:3542) > > at com.google.common.cache.LocalCache$Segment.loadSync( > LocalCache.java:2323) > > at com.google.common.cache.LocalCache$Segment. > lockedGetOrLoad(LocalCache.java:2286) > > at com.google.common.cache.LocalCache$Segment.get( > LocalCache.java:2201) > > at com.google.common.cache.LocalCache.get(LocalCache.java:3953) > > at com.google.common.cache.LocalCache.getOrLoad( > LocalCache.java:3957) > > at com.google.common.cache.LocalCache$LocalLoadingCache. > get(LocalCache.java:4875) > > at com.datastax.driver.core.CodecRegistry.lookupCodec( > CodecRegistry.java:480) > > at com.datastax.driver.core.CodecRegistry.codecFor( > CodecRegistry.java:448) > > at com.datastax.driver.core.CodecRegistry.codecFor( > CodecRegistry.java:430) > > at com.datastax.driver.core.AbstractGettableByIndexData.codecFor( > AbstractGettableByIndexData.java:69) > > at com.datastax.driver.core.AbstractGettableByIndexData.getInt( > AbstractGettableByIndexData.java:139) > > at com.datastax.driver.core.AbstractGettableData.getInt( > AbstractGettableData.java:26) > > at com.datastax.driver.core.AbstractGettableData.getInt( > AbstractGettableData.java:87) > > at org.apache.ignite.cache.store.cassandra.common. > PropertyMappingHelper.getCassandraColumnValue(PropertyMappingHelper.java: > 157) > > at org.apache.ignite.cache.store.cassandra.persistence. > PojoField.setValueFromRow(PojoField.java:181) > > at org.apache.ignite.cache.store.cassandra.persistence. > PersistenceController.buildObject(PersistenceController.java:406) > > at org.apache.ignite.cache.store.cassandra.persistence. > PersistenceController.buildValueObject(PersistenceController.java:228) > > at org.apache.ignite.cache.store.cassandra.CassandraCacheStore$ > 1.process(CassandraCacheStore.java:201) > > at org.apache.ignite.cache.store.cassandra.session. > CassandraSessionImpl.execute(CassandraSessionImpl.java:148) > > ... 14 more > > > > > > Roger > -- Best regards, Andrey V. Mashenkov
