title: Reading Cassandra's Blob from Ignite
body: <p>I'm trying to read the contents of Cassandra table from Ignite(acting as cache).
   The table is given below::</p>
  
  <pre><code>CREATE TABLE test.epc_table (
      imsi text PRIMARY KEY,
      data blob
  )
  </code></pre>
  
  <p>The data blob is being used to store a C++ class object(Class name is 'RtCassEpcTableDataVo').</p>
  
  <p>I'm trying to use the following c++ program to pass the value of 'imsi' and get the corresponding 'data'.</p>
  
  <pre><code>#include "ignite/ignite.h"
  #include "ignite/ignition.h"
  
  
  #include &lt;iostream&gt;
  #include&lt;string&gt;
  
  #include "RtCassEpcTableDataVo.hpp"
  
  using namespace ignite;
  using namespace cache;
  using namespace std;
  
  int main()
  {
          IgniteConfiguration cfg;
  
          cfg.springCfgPath = "/home/ignite/apache-ignite-fabric-2.4.0-bin/config/cassandra-config.xml";
  
          try
          {
                  // Start a node.
                  Ignite ignite = Ignition::Start(cfg);
  Cache&lt;string,RtCassEpcTableDataVo&gt; cache = ignite.GetCache&lt;std::string, RtCassEpcTableDataVo&gt;("cache1");
  
  cout&lt;&lt;endl&lt;&lt;"Enter IMSI : ";
  string l_imsi;
  getline(cin&gt;&gt;ws,l_imsi);
  
  RtCassEpcTableDataVo l_blob=cache.Get(l_imsi);
                  Ignition::StopAll(false);
          }
          catch (IgniteError&amp; err)
          {
                  std::cout &lt;&lt; "An error occurred: " &lt;&lt; err.GetText() &lt;&lt; std::endl;
  
                  return err.GetCode();
          }
  
          std::cout &lt;&lt; std::endl;
  
          return 0;
  }
  </code></pre>
  
  <p>However, I'm getting compilation errors.</p>
  
  <pre><code>In file included from /usr/local/include/ignite/impl/binary/binary_writer_impl.h:32:0,
                   from /usr/local/include/ignite/binary/binary_raw_writer.h:30,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/cache/query/query_scan.h:29,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h:21,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/ignite_impl.h:27,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/ignite.h:26,
                   from sample.cpp:1:
  /usr/local/include/ignite/impl/binary/binary_utils.h: In instantiation of âstatic T ignite::impl::binary::BinaryUtils::GetDefaultValue() [with T = RtCassEpcTableDataVo]â:
  /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/operations.h:349:62:   required from âvoid ignite::impl::Out1Operation&lt;T&gt;::SetNull() [with T = RtCassEpcTableDataVo]â
  sample.cpp:72:1:   required from here
  /usr/local/include/ignite/impl/binary/binary_utils.h:475:59: error: âGetNullâ is not a member of âignite::binary::BinaryType&lt;RtCassEpcTableDataVo&gt;â
                       ignite::binary::BinaryType&lt;T&gt;::GetNull(res);
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
  In file included from /usr/local/include/ignite/impl/binary/binary_object_impl.h:31:0,
                   from /usr/local/include/ignite/impl/binary/binary_writer_impl.h:35,
                   from /usr/local/include/ignite/binary/binary_raw_writer.h:30,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/cache/query/query_scan.h:29,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h:21,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/ignite_impl.h:27,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/ignite.h:26,
                   from sample.cpp:1:
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h: In instantiation of âvoid ignite::impl::binary::BinaryReaderImpl::ReadTopObject0(T&amp;) [with T = RtCassEpcTableDataVo]â:
  /usr/local/include/ignite/impl/binary/binary_type_impl.h:100:17:   required from âstatic T ignite::binary::ReadHelper&lt;T&gt;::Read(R&amp;) [with R = ignite::impl::binary::BinaryReaderImpl; T = RtCassEpcTableDataVo]â
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h:887:63:   required from âT ignite::impl::binary::BinaryReaderImpl::ReadTopObject() [with T = RtCassEpcTableDataVo]â
  /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/operations.h:344:21:   required from âvoid ignite::impl::Out1Operation&lt;T&gt;::ProcessOutput(ignite::impl::binary::BinaryReaderImpl&amp;) [with T = RtCassEpcTableDataVo]â
  sample.cpp:72:1:   required from here
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h:1001:40: error: âReadâ is not a member of âBType {aka ignite::binary::BinaryType&lt;RtCassEpcTableDataVo&gt;}â
                               BType::Read(reader, res);
                               ~~~~~~~~~~~^~~~~~~~~~~~~
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h: In instantiation of âT ignite::impl::binary::BinaryReaderImpl::GetNull() const [with T = RtCassEpcTableDataVo]â:
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h:905:45:   required from âvoid ignite::impl::binary::BinaryReaderImpl::ReadTopObject0(T&amp;) [with T = RtCassEpcTableDataVo]â
  /usr/local/include/ignite/impl/binary/binary_type_impl.h:100:17:   required from âstatic T ignite::binary::ReadHelper&lt;T&gt;::Read(R&amp;) [with R = ignite::impl::binary::BinaryReaderImpl; T = RtCassEpcTableDataVo]â
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h:887:63:   required from âT ignite::impl::binary::BinaryReaderImpl::ReadTopObject() [with T = RtCassEpcTableDataVo]â
  /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/operations.h:344:21:   required from âvoid ignite::impl::Out1Operation&lt;T&gt;::ProcessOutput(ignite::impl::binary::BinaryReaderImpl&amp;) [with T = RtCassEpcTableDataVo]â
  sample.cpp:72:1:   required from here
  /usr/local/include/ignite/impl/binary/binary_reader_impl.h:1024:59: error: âGetNullâ is not a member of âignite::binary::BinaryType&lt;RtCassEpcTableDataVo&gt;â
                       ignite::binary::BinaryType&lt;T&gt;::GetNull(res);
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
  In file included from /usr/local/include/ignite/impl/binary/binary_writer_impl.h:30:0,
                   from /usr/local/include/ignite/binary/binary_raw_writer.h:30,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/cache/query/query_scan.h:29,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h:21,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/impl/ignite_impl.h:27,
                   from /home/ignite/apache-ignite-fabric-2.4.0-bin/platforms/cpp/core/include/ignite/ignite.h:26,
                   from sample.cpp:1:
  /usr/local/include/ignite/impl/binary/binary_id_resolver.h: In instantiation of âint32_t ignite::impl::binary::TemplatedBinaryIdResolver&lt;T&gt;::GetTypeId() [with T = RtCassEpcTableDataVo; int32_t = int]â:
  sample.cpp:72:1:   required from here
  /usr/local/include/ignite/impl/binary/binary_id_resolver.h:88:68: error: âGetTypeIdâ is not a member of âignite::binary::BinaryType&lt;RtCassEpcTableDataVo&gt;â
                       return ignite::binary::BinaryType&lt;T&gt;::GetTypeId();
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
  /usr/local/include/ignite/impl/binary/binary_id_resolver.h: In instantiation of âint32_t ignite::impl::binary::TemplatedBinaryIdResolver&lt;T&gt;::GetFieldId(int32_t, const char*) [with T = RtCassEpcTableDataVo; int32_t = int]â:
  sample.cpp:72:1:   required from here
  /usr/local/include/ignite/impl/binary/binary_id_resolver.h:94:73: error: âGetFieldIdâ is not a member of âignite::binary::BinaryType&lt;RtCassEpcTableDataVo&gt;â
                           return ignite::binary::BinaryType&lt;T&gt;::GetFieldId(name);
                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
  </code></pre>
  
  <p>The persistance-settings.xml is as follows:</p>
  
  <pre><code>&lt;persistence keyspace="test" table="epc_table"&gt;
      &lt;keyPersistence class="java.lang.String" strategy="PRIMITIVE" column="imsi"/&gt;
      &lt;valuePersistence column="data" /&gt;
  &lt;/persistence&gt;
  </code></pre>
  
  <p>I don't understand why this same program works(with some minor changes in the cpp as well as the persistence-setting.xml), when used on some other table i.e. </p>
  
  <pre><code>CREATE TABLE test.table2 (
      imsi text PRIMARY KEY,
      data int
  )
  </code></pre>
  
  <blockquote>
    <p>In continuation of: <a href="https://stackoverflow.com/q/49996112/5701173">Integrating Apache Cassandra with Apache Ignite</a></p>
  </blockquote>