【问题标题】:Mapping a column of type list/set/map using datastax object mapper使用 datastax 对象映射器映射类型为 list/set/map 的列
【发布时间】:2015-11-03 13:23:10
【问题描述】:

我正在尝试使用 datastax 映射器,它对所有原始类型都运行良好。

我无法将它用于 cassandra 表中的 Map 类型列。 可能,问题也与列的 Set 和 List 类型有关。

任何人都可以帮助我如何做到这一点?

为了清楚起见,我使用下面的 maven 依赖项

        <cassandra.version>2.1.7.1</cassandra.version>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-core</artifactId>
            <version>${cassandra.version}</version>
        </dependency>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-mapping</artifactId>
            <version>${cassandra.version}</version>
        </dependency>

并使用 com.datastax.driver.mapping.Mapper

下面是cassandra中的表格列结构,

features map<text, text>

这是我使用 datastax 映射器定义映射到表的 vo 的方式,

@Table(keyspace = "keyspace", name = "mytable")
public class myVO{
    @Column(name = "features")
    private Map features;
   //getters and setters here
}

这是我使用映射器进行映射的方式

protected myDAO(Class<T> typeParameterClass) {
        this.mapper = new MappingManager(session).mapper(typeParameterClass);
    }

myDAO(myVO.class);

而且,它会抛出异常,

java.lang.IllegalArgumentException: Cannot map unknown class java.util.Map for field features
    at com.datastax.driver.mapping.TypeMappings.getSimpleType(TypeMappings.java:67)
    at com.datastax.driver.mapping.ReflectionMapper.extractSimpleType(ReflectionMapper.java:196)
    at com.datastax.driver.mapping.ReflectionMapper$LiteralMapper.<init>(ReflectionMapper.java:63)
    at com.datastax.driver.mapping.ReflectionMapper$LiteralMapper.<init>(ReflectionMapper.java:57)
    at com.datastax.driver.mapping.ReflectionMapper$ReflectionFactory.createColumnMapper(ReflectionMapper.java:231)
    at com.datastax.driver.mapping.AnnotationParser.convert(AnnotationParser.java:166)
    at com.datastax.driver.mapping.AnnotationParser.parseEntity(AnnotationParser.java:109)
    at com.datastax.driver.mapping.MappingManager.getMapper(MappingManager.java:148)
    at com.datastax.driver.mapping.MappingManager.mapper(MappingManager.java:105)

【问题讨论】:

    标签: java cassandra datastax-java-driver


    【解决方案1】:

    相当愚蠢的错误。 但是错误信息可以很详细。

    任何人都在看,错误是,我没有将 java 中的地图转换为

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2019-11-27
      • 2016-01-01
      • 2019-09-24
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多