Как сопоставить тип пользовательских данных в cassandra с использованием данных весенней загрузки

Мне нужна помощь, связанная с данными весенней загрузки с использованием базы данных Cassandra.
У меня есть следующие зависимости в моем 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


person Abhilash    schedule 21.04.2017    source источник


Ответы (1)


Spring Data для Apache Cassandra и Datastax Mapping — это два независимых инструмента, которые пытаются выполнить одно и то же. Пожалуйста, используйте любой из них, но не смешивайте их.

CrudRepository — это тип данных Spring, а @Field и @UDT — из Datastax Mapping.

Поддержка UDT для Spring Data для Apache Cassandra доступна, начиная с версии 1.5, см. справочные документы. Spring Data для Apache Cassandra 1.5 требует Datastax Java Driver 3.0 или новее.

person mp911de    schedule 21.04.2017