具有分区键和簇密钥的Kundera持久性实体定义

时间:2017-02-16 20:08:42

标签: cassandra kundera

我正在尝试使用Kundera连接到Cassandra。在我的例子中,我有一个带有分区键{A,B}的实体X和簇密钥{C}。

对于每个A和B组合(主键),我们有多个C值。

所以在这种情况下应该如何定义实体?

@Embeddable
public class PrimayKey implements Serializable{

 @Column(name = "A")
     private String a;

     @Column(name = "B")
     private String b;
}




@Entity
@Table(name = "X")
public class X{


    @EmbeddedId
    private PrimayKey key;

    @Column(name = "C")
    private String c;

   @Column(name = "D")
    private String d;
}

如果我按主键查找,它不起作用,因为我们为每个A和B组合都有多个C和D值。在这种情况下,我们应该如何定义实体?

1 个答案:

答案 0 :(得分:0)

您可以为分区键创建一个embeddable,然后将其用作主键中的字段。 Kundera将自动读取实体并将分区键以外的字段视为聚类键。

Cassandra等效主键:((A,B),C)

实体:

@Embeddable
public class PartitionKey {

 @Column(name = "A")
 private String a;

 @Column(name = "B")
 private String b;

}

@Embeddable
public class PrimayKey {

 private PartitionKey key;

 @Column(name = "C")
 private String c;

}

请参阅此sample entity了解详情。