2017-04-21 2 views
0

Ich bin auf der Suche nach Hilfe im Zusammenhang mit Spring Boot-Daten mit Cassandra-Datenbank.
Ich habe folgende Abhängigkeiten in meiner pom.xml.Wie Benutzer Datentyp in Cassandra mithilfe Spring Boot-Daten zuordnen

 <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 

i unten Fehlermeldung erhalten: Cassandra Einheiten müssen die @Table haben, @Persistent oder @PrimaryKeyClass Annotation

Antwort

1

Spring Data für Apache Cassandra und DataStax‘Mapping sind zwei unabhängige Werkzeuge, die das gleiche zu erreichen versuchen, . Bitte benutzen Sie eines, aber mischen Sie diese nicht.

CrudRepository ist ein Spring-Datentyp, während @Field und @UDT von Datastax Mapping kommen.

UDT-Unterstützung für Spring Data für Apache Cassandra ist verfügbar ab Version 1.5, siehe reference docs. Spring Data für Apache Cassandra 1.5 erfordert Datastax Java Driver 3.0 oder neuer.

Verwandte Themen