【问题标题】:Missing mandatory PRIMARY KEY part version缺少必需的 PRIMARY KEY 部分版本
【发布时间】:2016-02-06 01:56:54
【问题描述】:

我正在开发一个 spring 应用程序,以使用 spring 将记录插入到 datastax cassandra。 下面是我用来创建表格的脚本。

CREATE TABLE user(
            name text,
            source text,
            createddate timestamp,
            version timestamp,
            id timeuuid,
            system text,
            desc text,
            PRIMARY KEY((name,source,createddate),version)
);

下面是我为连接到 cassandra 表而编写的 dto。

@PrimaryKeyClass
public class User implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;
@PrimaryKeyColumn(ordinal = 0,type = PrimaryKeyType.PARTITIONED)
private String name; 
@PrimaryKeyColumn(ordinal = 1,type = PrimaryKeyType.PARTITIONED)
private String source; 
@PrimaryKeyColumn(ordinal = 2,type = PrimaryKeyType.PARTITIONED)
private Date createddate; 
@PrimaryKeyColumn(ordinal = 3,type = PrimaryKeyType.CLUSTERED)
private Date version; 
private UUID id;
private String system;
private String desc;

但是当我尝试插入记录时,它会抛出异常“com.datastax.driver.core.exceptions.InvalidQueryException:缺少必需的 PRIMARY KEY 部分版本”。请帮我解决这个问题。提前非常感谢。

【问题讨论】:

    标签: java spring cassandra datastax


    【解决方案1】:

    1°) 你检查过version 字段不是null 吗?

    2°) 因为我从未在 Cassandra 中使用过 Spring Data,所以我不确定,但通过查看 those annotations documentation 或许您可以:

    • 创建一个用@PrimaryKeyClass注解的专用主键类
    • 将您的 @PrimaryKeyColumn 注释属性放入其中
    • User 类中使用新的主键类,并用@PrimaryKey 注释

    【讨论】:

    • 谢谢 ThSlyu。如前所述,版本字段为空。现在我为它分配了一个值,它工作正常。
    猜你喜欢
    • 2015-08-22
    • 2023-01-23
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多