2017-02-16 36 views
1

我想用Kundera连接到Cassandra。在我的情况下,我有一个实体X与分区密钥{A,B}和集群密钥{C}。带分区键和集群键的Kundera持久化实体定义

对于每个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

您可以创建一个可嵌入的分区键,然后将其用作主键中的字段。 Kundera将自动读取这些实体并将分区键以外的字段视为集群键。

卡桑德拉相当于主键:((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获取更多信息。