1

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;
    }

}

私のカサンドラテーブル:

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

Address のプロパティをそれを含むエンティティにマップしたいのですが、アドレス用の別のテーブルは必要ありません。JPA では、@Embeddable アノテーションを使用すると思います。spring-data-cassandra に同様の構造はありますか?

4

1 に答える 1

2

埋め込み型はまだ spring-data-cassandra でサポートされていません。機能リクエストはDATACASS-167で入手できます。

エンティティに埋め込むことができる唯一の部分は、主キーです。主キーが複数のフィールドで構成されている場合、そのフィールドを別のクラスに外部化し、後でそれを@PrimaryKeyアノテーションで使用できます。

コメント.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、マーク

于 2015-05-28T18:56:35.323 に答える