【问题标题】:unconfigured columnfamily Cassandra Error while Using POJO使用 POJO 时未配置的列族 Cassandra 错误
【发布时间】:2015-12-28 15:41:30
【问题描述】:

我按照下面的链接将 Person 对象插入到位于 Cassandra 服务器上的 Person 表中 http://docs.spring.io/spring-data/cassandra/docs/1.0.4.RELEASE/reference/html/cassandra.core.html

但我有unconfigured columnfamily error。我已经测试了几种使之成为可能的方法。有些方法可以正常工作。这是结果。

1- 正常运行

    PreparedStatement statement = session.prepare("INSERT INTO \"tims\".\"Person\" (id, name, age) VALUES (?,?,?)");
int id=1234;
    String name="Ahmet"+id;
    int age=33;
BoundStatement bind = statement.bind(id,name,age);
    session.executeAsync(bind);

2- 正常运行

String cql = "insert into \"tims\".\"Person\" (id, name, age) values (2345, 'Ali-updated-2', 39)";
        CassandraOperations cassandraOps = new CassandraTemplate(session);

        cassandraOps.execute(cql);

3- 无法正常运行

CassandraOperations cassandraOps = new CassandraTemplate(session);
cassandraOps.insert(new Person(2345, "Ahmet-updated", 33));

这里是 POJO 类

package com.ttech.tims.bipcamp.dao.cassandra;

import org.springframework.data.cassandra.mapping.Column;
import org.springframework.data.cassandra.mapping.PrimaryKey;
import org.springframework.data.cassandra.mapping.Table;

@Table(value="Person")
public class Person {


    @PrimaryKey(value="id")
    @Column(value="id")
    private int id;

    @Column(value="name")
    private String name;

    @Column(value="age")
    private int age;

    public Person(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int 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 + "]";
    }

}

【问题讨论】:

    标签: java cassandra cql


    【解决方案1】:

    我已经下载了以下API的源代码

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-cassandra</artifactId>
        <version>1.0.6.RELEASE</version>
    </dependency>
    

    我发现以下方法返回行第一列的值 cassandraOps.queryForObject(s, Person.class) 具有以下方法跟踪。

    CqlTemplate-> processOne()
    
    @SuppressWarnings("unchecked")
    @Override
    public <T> T processOne(ResultSet resultSet, Class<T> requiredType) throws DataAccessException {
        if (resultSet == null) {
            return null;
        }
        Row row = resultSet.one();
        if (row == null) {
            return null;
        }
        return (T) firstColumnToObject(row);
    }
    

    我用过另外两个样本:

    Map map = cassandraOps.queryForMap(s);
    
    System.out.println("id:"+map.get("id")+", name:"+map.get("name")+", age:"+map.get("age"));
    
    Person person = cassandraOps.queryForObject(s, new RowMapper<Person>(){
    
        @Override
        public Person mapRow(Row row, int rowNum) throws DriverException {
            return new Person(row.getInt(0), row.getString(1),row.getInt(2));
        }
    });
    
    System.out.println("Person:"+person);
    

    我找到了带有键空间的插入语句的实际解决方案。使用以下内容更新依赖项列表。

    <properties>
        <org.springframework.version>4.0.5.RELEASE</org.springframework.version>
    </properties>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-cassandra</artifactId>
        <version>1.3.2.RELEASE</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 1970-01-01
      • 2017-05-20
      • 2018-02-21
      • 2014-03-02
      • 2014-07-09
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多