У меня есть таблица Cassandra, и я хочу поместить данные из кэша Ignite в таблицу Cassandra. Для этого я настроил Ignite постоянство и все. После этого, когда я положил данные на Кассандру, используя cache.put(key,value)
только ключ вставляется в таблицу, все значения поля отображаются как пустые. Я использую стратегию как POJO
,
файл persistence.xml
<persistence keyspace="sam" table="user_permission">
<keyPersistence class="com.test.Test" strategy="POJO">
<partitionKey>
<field name="id" column="id" />
</partitionKey>
</keyPersistence>
<valuePersistence class="com.test.Test" strategy="POJO">
<field name="desc" />
<field name="groupid" />
</valuePersistence>
</persistence>
Стол Кассандры выглядит как
CREATE TABLE sam.user_permission (
id text PRIMARY KEY,
desc text,
groupid text
)
queryEntities
<property name="queryEntities">
<list>
<bean class="org.apache.ignite.cache.QueryEntity">
<property name="keyType" value="Test"/>
<property name="valueType" value="Test"/>
<property name="fields">
<map>
<entry key="desc" value="java.lang.String"/>
<entry key="groupid" value="java.lang.String"/>
</map>
</property>
</bean>
</list>
</property>
test.h
namespace ignite
{
namespace examples
{
struct Test
{
Test()
{
// No-op.
}
Test(const std::string& id, const std::string& desc, const std::string& groupid) :
id (id), desc (desc), groupid (groupid)
{
// No-op.
}
const std::string& Getid () const
{
return id;
}
const std::string& Getdesc () const
{
return desc;
}
const std::string& GetGroupid () const
{
return groupid;
}
std::string ToString()
{
std::ostringstream oss;
oss << "Address [street=" << id << ", zip=" << desc<< "]";
return oss.str();
}
std::string id;
std::string desc;
std::string groupid;
};
}
}
Задача ещё не решена.
Других решений пока нет …