Я просматривал документацию Spring Data Cassandra (http://docs.spring.io/spring-data/cassandra/docs/1.0.1.RELEASE/reference/html/cassandra.core.html).) В основном, с соответствующей аннотацией , я надеялся, что CassandraTemplate сопоставляет строку с объектом POJO, но это не сработало, как я ожидал.
Для вызова,
cassandraOps.queryForObject(s, Person.class)
Я получил следующую ошибку:
Исключение в потоке "main" java.lang.ClassCastException: java.lang.String не может быть приведен к Person
Что-нибудь, что мне не хватает? Ниже приведена та же копия и вставка из документа выше.
Класс Person выглядит так:
@Table
public class Person {
@PrimaryKey
private String id;
private String name;
private int age;
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
и класс приложения выглядит так...:
public class CassandraApp {
private static final Logger LOG = LoggerFactory.getLogger(CassandraApp.class);
private static Cluster cluster;
private static Session session;
public static void main(String[] args) {
try {
cluster = Cluster.builder().addContactPoints(InetAddress.getLocalHost()).build();
session = cluster.connect("mykeyspace");
CassandraOperations cassandraOps = new CassandraTemplate(session);
cassandraOps.insert(new Person("1234567890", "David", 40));
Select s = QueryBuilder.select().from("person");
s.where(QueryBuilder.eq("id", "1234567890"));
LOG.info(cassandraOps.queryForObject(s, Person.class).getId());
cassandraOps.truncate("person");
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}