当前位置: 首页 > 知识库问答 >
问题:

如何利用spring boot数据映射cassandra中的用户数据类型

太叔经赋
2023-03-14

我正在寻找一些与使用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注释

共有1个答案

芮岳
2023-03-14

spring Apache Data for Cassandra和DataStax的Mapping是两个独立的工具,它们试图实现相同的功能。请随便用一种,但不要把这两种混用。

crudrepository是spring数据类型,而@field@udt来自Datastax映射。

Apache Cassandra对spring数据的UDT支持从1.5版开始提供,请参阅参考文档。Apache Cassandra 1.5的spring数据需要Datastax Java驱动程序3.0或更新版本。

 类似资料:
  • 我对卡桑德拉的数据建模有一个疑问,希望能在这里提出一些建议。 我们正在尝试构建一个多租户应用程序,我们希望数据结构由用户定义。用户可以定义数据源、字段数量、数据类型、顺序等,然后基于此结构上载数据。既然Cassandra不支持混合数据类型列表,我们如何在Cassandra之上设计这样的应用程序呢。当前集合类型为映射(相同类型)/集/列表(相同类型)。此外,是否可以基于用户定义的实体查询数据? 目前

  • 考虑我有两个表的场景,和。我想创建第三个表,它只是一个包含两列的映射表,和的主键。表A和表B分别包含8000万条和1.5亿条记录。目前,我在DB2(即我的DB)中编写了一个存储过程,它将首先连接和选择两个表中的记录,并使用游标进行迭代。在这个迭代过程中,我将插入到第三个表中,并执行一个中间提交。 现在,这个存储过程运行了很长时间(大约5小时)来完成这个操作,因为在DB2存储过程中不可能插入多行(这

  • 我正在尝试添加一条消息到amazon aws sqs中的队列 所以我试了一下 它给了我这个错误 我猜是地图类型的,怎么能把这个参数以地图格式发送

  • 我正在开发Spring Boot应用程序与Spring Data JPA和H2数据库。我使用的是sping-data-jpa。当我使用ManyTo很多映射器类来获取另一个类的数据时。但是我发现它是NULL。 代码在github上 书班 著者班 测试中的测试代码捕捉器。班 我的代码有错误吗?或者其他方式? 非常感谢。

  • 问题内容: 我的SQL-2005数据库中有一列曾经是 varchar(max) ,但已更改为 nvarchar(max) 。 现在,我需要更新我的hibernate映射文件以反映更改,这就是它过去的样子: 当我尝试运行该应用程序时,出现以下错误: org.hibernate.HibernateException:[表]中列值的列类型错误。找到:ntext,预期:文本 我应该在’type’属性中添加

  • 主要内容:集合类型,用户定义的数据类型:CQL提供了丰富的内置数据类型,包括集合类型。 除了这些数据类型,用户还可以创建自己的自定义数据类型。 下表提供了CQL中可用的内置数据类型的列表。 数据类型 常量 说明 ascii strings 表示ASCII字符串 bigint bigint 表示64位有符号long类型 blob blobs 表示任意字节 Boolean booleans 表示真或假 counter integers 表示