具有分区键和集群键的 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 了解更多信息。
我正在尝试使用 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 了解更多信息。