Spring-data-cassandra组件/复杂类型非规范化映射



我正在尝试使用spring-data-cassandra (1.1.2.RELEASE),我遇到了JPA术语中缺乏可嵌入类型映射的问题。

我有一个这样的实体类:

@Table
public class Customer {
    private UUID id;
    private String name;
    private Address address;
    public UUID getId() {
        return id;
    }
    public void setId(UUID id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
 }

和可嵌入的Address类:

public class Address {
    private String address;
    private String city;
    private String state;
    private String zip;
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getZip() {
        return zip;
    }
    public void setZip(String zip) {
        this.zip = zip;
    }
}

My cassandra table:

create table customer ( 
    id uuid primary key, 
    name text, 
    address text, 
    city text, 
    state text, 
    zip text
);

我想要Address的属性映射到包含实体,我不想要一个单独的地址表。在JPA中,我相信我会使用@Embeddable注释。在spring-data-cassandra中是否存在类似的构造?

spring-data-cassandra还不支持可嵌入类型。功能请求可在DATACASS-167获得。

实体中唯一可以嵌入的部分是主键。如果你的主键由多个字段组成,你可以将这些字段外部化到一个单独的类中,然后在@PrimaryKey注释中使用它。

Comment.java

@Table("comments")
public class Comment {
    @PrimaryKey
    private CommentKey pk;
    private String text;
}

CommentKey.java

@PrimaryKeyClass
public class CommentKey implements Serializable {
    private static final long serialVersionUID = -7871651389236401141L;
    @PrimaryKeyColumn(ordinal = 0, type = PrimaryKeyType.PARTITIONED)
    private String author;
    @PrimaryKeyColumn(ordinal = 1)
    private String company;
}

HTH,马克

最新更新