当前位置: 首页 > 知识库问答 >
问题:

卡桑德拉Spring数据

邬安邦
2023-03-14

我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为冻结

脚本

create table IF NOT EXISTS test (
id varchar,
name varchar,
target frozen<map<text, list<text>>>,
primary key (id, name)

);

我做了这样的东西:

@Column("target")
@CassandraType(type = DataType.Name.MAP, typeArguments = arrayOf( DataType.Name.MAP))   
Map<String, List<String>> target;

但是得到错误:

找不到请求操作的编解码器:[列表


共有1个答案

公孙弘深
2023-03-14

请删除@CassandraType注释并添加驱动映射依赖项

用户模型

@Table(keyspace = "test_space", name = "user")
public class User {

    @PartitionKey
    private int id;

    @Column
    private String name;

    @Column
    private Map<String, List<String>> tags;

}

主要方法

public void run(String... args) throws Exception {
    Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").build();
    Session session = cluster.connect("test_space");
    MappingManager manager = new MappingManager(session);
    Mapper<User> userMapper = manager.mapper(User.class);
    System.out.println(userMapper.get(2));
    session.close();
    cluster.close();
}

输出

User{id=2, name='user', tags={test=[test], tester=[one, two]}}

表数据

cqlsh:test_space> SELECT * FROM user ;

 id | name | tags
----+------+----------------------------------------------
  2 | user | {'test': ['test'], 'tester': ['one', 'two']}

(1 rows)
cqlsh:test_space> 

依赖性聚甲醛

    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-mapping</artifactId>
        <version>3.0.0</version>
    </dependency>
 类似资料:
  • 我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?

  • 有人可以帮助我了解如何使用POJO类插入卡桑德拉UDT数据吗? 我创建了一个POJO类来映射Cassandra的表,并为Cassandra UDT创建了另一个类,但是当我插入映射Cassandra表的主POJO类时,它无法识别另一个POJO类(映射Cassandra的UDT)。我还在每个类和每个类对象上编写了注释。 这是我的一个POJO类:- 另一个POJO类:-

  • 我正在尝试使用Cassandra 2.1升级到Spring Data Cassandra 1.5. x的Spring Boot 1.5,但出现启动错误: 未能实例化[org.springframework.data.cassandra.mapping.CassandraMappingContext]:工厂方法“cassandraMapping”引发异常;嵌套异常为java.lang.NoClass

  • 我目前在cassandra中有一个名为macrecord的表,类似于以下内容: 在这种情况下,我想不出其他解决方案,只有在macadd值重复的情况下删除整行,然后插入具有更新时间戳的新行。 是否有更好的解决方案在macadd值重复时更新时间戳,或者在我的原始表中只有macadd是主键的范围内查询时间戳值的替代方法。

  • 我们运行的cassandra集群有3个节点,复制因子为2。 我们的nodejs服务器是查询这个集群的唯一地方。 是否有其他任何地方的参数设置可能导致不一致的查询? cassandra v2.2.4 nodejs驱动程序v3.0.0 编辑-添加我正在做的事情的示例: 1)检查用户名是否被占用 2)创建用户

  • 我们一直在使用Spark RDD API(Spark 2.0)来处理在Cassandra.Note中建模的数据,这些数据在Cassandra中建模以实现高效的读写。 然而,现在还有SparkSQLAPI,Spark DataFrame API,它也是一种替代的数据访问方法-http://spark.apache.org/docs/latest/sql-programming-guide.html