【问题标题】:How to map user data type in cassandra using spring boot data如何使用 Spring Boot 数据在 cassandra 中映射用户数据类型
【发布时间】:2017-04-21 23:23:15
【问题描述】:

我正在寻找一些与使用 Cassandra 数据库的 Spring Boot 数据相关的帮助。
我的 pom.xml 中有以下依赖项。

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
        </dependency>

        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-core</artifactId>
            <version>2.1.10.3</version>
        </dependency>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-mapping</artifactId>
            <version>2.1.10.3</version>
        </dependency>

The table structure looks like:

@Table(value = "TEST_ORDERS")
public class OrderDTO {

    @PrimaryKey
    @Column(value = "email")
    private String emailId;

    @Column(value = "order_id")
    private int orderId;

    @Column(value = "creation_date")
    private Timestamp creationDate;

    @Column(value = "discount_total")
    private double discountTotal;

    @Column(name = "shipments")
    //This is a UDT type
    private Set<ShippingDetails> shipments;

    //getters and setters here
}

The ShippingDetails object is a UDT with following declartion and i defined as a frozen collection in the cassandra CQL sripts

@UDT(name = "shipping", keyspace = "mc_checkout")
public class ShippingDetails {

    @Field(name = "name")
    private FullName name;

    @Field(name = "quantity_shipped")
    private int quantityShipped;

    @Field(name = "shipping_address")
    private CheckoutAddress shippingAddress; 
    //so on
}

There is a repository created for the basic CRUD operations:
@Repository
public interface OrderRepository extends CrudRepository<OrderDTO, String> {

}

    When i try to invoke findOne API of this repository in my Service class 

我得到以下错误: Cassandra 实体必须具有@Table、@Persistent 或@PrimaryKeyClass 注解

【问题讨论】:

    标签: spring-boot spring-data-cassandra


    【解决方案1】:

    用于 Apache Cassandra 的 Spring Data 和 Datastax 的 Mapping 是两个独立的工具,它们试图完成相同的任务。请使用其中任何一种,但不要混合使用。

    CrudRepository 是 Spring Data 类型,而 @Field@UDT 来自 Datastax Mapping。

    从 1.5 版开始提供对 Spring Data for Apache Cassandra 的 UDT 支持,请参阅 reference docs。 Spring Data for Apache Cassandra 1.5 需要 Datastax Java Driver 3.0 或更高版本。

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 2015-11-16
      • 1970-01-01
      • 2021-08-01
      • 2018-06-11
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      相关资源
      最近更新 更多