Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入期间出现未配置的columnfamily错误_Java_Spring_Cassandra_Spring Data Cassandra - Fatal编程技术网

Java 插入期间出现未配置的columnfamily错误

Java 插入期间出现未配置的columnfamily错误,java,spring,cassandra,spring-data-cassandra,Java,Spring,Cassandra,Spring Data Cassandra,我将下面的user info对象映射到键空间“data\u collection”中的表“user\u info”。我已经在我的cassandra数据库中创建了“user_info”表。我使用spring数据cassandra从JAVA和spring注释连接到cassandra数据库,如下所示 我正在使用以下代码将一条记录插入我的“user\u info”表中 我的selectOne工作正常,而在插入过程中,我遇到以下异常。我已经使用上面的注释清楚地将UserInfo.java类映射到表名“us

我将下面的user info对象映射到键空间“data\u collection”中的表“user\u info”。我已经在我的cassandra数据库中创建了“user_info”表。我使用spring数据cassandra从JAVA和spring注释连接到cassandra数据库,如下所示

我正在使用以下代码将一条记录插入我的“user\u info”表中

我的selectOne工作正常,而在插入过程中,我遇到以下异常。我已经使用上面的注释清楚地将UserInfo.java类映射到表名“user\u info”。我不知道为什么insert试图发生在表“userinfo”上

请在下面的cassandra中找到该表的描述

快速更新:我刚刚尝试保存另一个类Test.java。它被映射到一个表“test_info”。我犯了以下错误

org.springframework.cassandra.support.exception.CassandraInvalidQueryException: unconfigured columnfamily test; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured columnfamily test
at org.springframework.cassandra.support.CassandraExceptionTranslator.translateExceptionIfPossible(CassandraExceptionTranslator.java:128)
at org.springframework.cassandra.core.CqlTemplate.potentiallyConvertRuntimeException(CqlTemplate.java:946)
at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:930)
at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:912)
at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:278)
at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:559)
at org.springframework.cassandra.core.CqlTemplate.execute(CqlTemplate.java:1323)
at org.springframework.data.cassandra.core.CassandraTemplate.doInsert(CassandraTemplate.java:708)
at org.springframework.data.cassandra.core.CassandraTemplate.insert(CassandraTemplate.java:290)
at org.springframework.data.cassandra.core.CassandraTemplate.insert(CassandraTemplate.java:285)
我只是想知道我的Java类名和cassandra中的表名是否应该始终相同。因为它寻找的是columnfamily“test”,而不是我在@Table注释中指定的“test_info”

下面是对我的键空间的描述

编辑-已解决: 我根据与@pinkparter的对话找到了解决方案。
我导入了com.datasax.driver.mapping.annotations.Table而不是org.springframework.data.cassandra.mapping.Table,这就是为什么它不支持表名映射。感谢您的帮助。

问题可能是Cassandra需要的表、Spring数据的包导入
org.springframework.Data.Cassandra.mapping.Table
。用它替换导入的
com.datasax.driver.mapping.annotations.Table

问题可能出在表的包导入上,Spring数据Cassandra需要
org.springframework.Data.Cassandra.mapping.Table
。用它替换导入的
com.datastax.driver.mapping.annotations.Table

使用cqlsh尝试查询并检查该表是否存在,还要确保您连接到了正确的联系点,并且Apache Cassandra的keyspaceSpring数据不是ORM…Cassandra中本来就没有关系,所以它只是一个对象映射器。@Ashrafulism我在cqlsh中的查询工作正常。即使通过Java,我的fetch也能正常工作,没有任何错误。我不确定这是否是因为select对象,我在该对象中显式指定了表名,但它可以工作。我只有在插入时才有问题。是的,我已连接到正确的键空间。@MP911我是否已编辑我的问题。我使用Spring数据从应用程序连接到Cassandra数据库。@lazytc我怀疑您在创建键空间时使用了错误的策略类,您使用了哪种策略?您能描述一下键空间的输出吗?请使用cqlsh尝试您的查询,并检查表是否存在,同时确保您连接到了正确的联系点,并且Apache Cassandra的keyspaceSpring数据不是ORM…Cassandra中固有的没有关系,所以它只是一个对象映射器。@Ashrafulism我在cqlsh中的查询工作正常。即使通过Java,我的fetch也能正常工作,没有任何错误。我不确定这是否是因为select对象,我在该对象中显式指定了表名,但它可以工作。我只有在插入时才有问题。是的,我已连接到正确的键空间。@MP911我是否已编辑我的问题。我使用Spring数据从应用程序连接到Cassandra数据库。@lazytc我怀疑您在创建键空间时使用了错误的策略类,您使用了哪种策略?您能描述一下键空间的输出吗?
    @Autowired
    CassandraTemplate cassandraTemplate;

    public void saveUserInfo(UserInfo userInfo){
        logger.debug("userInfo "+new Gson().toJson(userInfo));
        String email = userInfo.getEmail();
        Select select = QueryBuilder.select().from("user_info");
        select.where(QueryBuilder.eq("email", email));
        logger.debug("Query "+select.toString());
        UserInfo existingUser = cassandraTemplate.selectOne(select, UserInfo.class);
       if(existingUser!=null){
            cassandraTemplate.update(userInfo);
       }
       else{
            cassandraTemplate.insert(userInfo);
       }

    }
org.springframework.cassandra.support.exception.CassandraInvalidQueryException: unconfigured columnfamily userinfo; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured columnfamily userinfo
    at org.springframework.cassandra.support.CassandraExceptionTranslator.translateExceptionIfPossible(CassandraExceptionTranslator.java:128)
    at org.springframework.cassandra.core.CqlTemplate.potentiallyConvertRuntimeException(CqlTemplate.java:946)
    at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:930)
    at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:912)
    at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:278)
    at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:559)
    at org.springframework.cassandra.core.CqlTemplate.execute(CqlTemplate.java:1333)
    at org.springframework.data.cassandra.core.CassandraTemplate.doUpdate(CassandraTemplate.java:895)
    at org.springframework.data.cassandra.core.CassandraTemplate.update(CassandraTemplate.java:537)
    at org.springframework.data.cassandra.core.CassandraTemplate.update(CassandraTemplate.java:532)
CREATE TABLE user_info (
  name text,
  email text,
  phone int
  PRIMARY KEY ((email))
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.100000 AND
  gc_grace_seconds=864000 AND
  index_interval=128 AND
  read_repair_chance=0.000000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  default_time_to_live=0 AND
  speculative_retry='99.0PERCENTILE' AND
  memtable_flush_period_in_ms=0 AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'LZ4Compressor'};
org.springframework.cassandra.support.exception.CassandraInvalidQueryException: unconfigured columnfamily test; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured columnfamily test
at org.springframework.cassandra.support.CassandraExceptionTranslator.translateExceptionIfPossible(CassandraExceptionTranslator.java:128)
at org.springframework.cassandra.core.CqlTemplate.potentiallyConvertRuntimeException(CqlTemplate.java:946)
at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:930)
at org.springframework.cassandra.core.CqlTemplate.translateExceptionIfPossible(CqlTemplate.java:912)
at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:278)
at org.springframework.cassandra.core.CqlTemplate.doExecute(CqlTemplate.java:559)
at org.springframework.cassandra.core.CqlTemplate.execute(CqlTemplate.java:1323)
at org.springframework.data.cassandra.core.CassandraTemplate.doInsert(CassandraTemplate.java:708)
at org.springframework.data.cassandra.core.CassandraTemplate.insert(CassandraTemplate.java:290)
at org.springframework.data.cassandra.core.CassandraTemplate.insert(CassandraTemplate.java:285)
CREATE KEYSPACE data_collection WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': '3'
};