gpt4 book ai didi

java - Cassandra + Spring 数据

转载 作者:行者123 更新时间:2023-11-30 10:21:19 26 4
gpt4 key购买 nike

我正在使用 spring-data-cassandra,需要使用 jpa 映射字段,在 cassandra 中类型为 frozen<map<text, list<text>>>

表格脚本:

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;

但出现错误:

Codec not found for requested operation: [list <-> java.util.List]; nested exception is
com.datastax.driver.core.exceptions.CodecNotFoundException:
Codec not found for requested operation: [list <-> java.util.List]

最佳答案

请移除@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>

依赖pom

    <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.0.0</version>
</dependency>

关于java - Cassandra + Spring 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47933892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com