具有分区键和集群键的 Kundera 持久化实体定义

Kundera persistence entity definition with partition key and cluster key

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

对于每个 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 值。在这种情况下,我们应该如何定义实体?

您可以为分区键创建可嵌入对象,然后将其用作主键中的字段。 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 了解更多信息。