我正在尝试使用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值。在这种情况下,我们应该如何定义实体?
答案 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了解详情。