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

Spring卡桑德拉UDT数据插入

曹华荣
2023-03-14

有人可以帮助我了解如何使用SpringPOJO类插入卡桑德拉UDT数据吗?

我创建了一个POJO类来映射Cassandra的表,并为Cassandra UDT创建了另一个类,但是当我插入映射Cassandra表的主POJO类时,它无法识别另一个POJO类(映射Cassandra的UDT)。我还在每个类和每个类对象上编写了注释。

这是我的一个POJO类:-

package com.bdbizviz.smb.model.entity;

import org.springframework.cassandra.core.PrimaryKeyType;
import org.springframework.data.cassandra.mapping.PrimaryKeyColumn;
import org.springframework.data.cassandra.mapping.Table;

import com.bdbizviz.smb.cassandra.udt.CoverPhoto;
import com.bdbizviz.smb.cassandra.udt.Location;
import com.bdbizviz.smb.cassandra.udt.MailingAddress;
import com.bdbizviz.smb.cassandra.udt.Reference;
import com.bdbizviz.smb.cassandra.udt.RestaurantServices;
import com.bdbizviz.smb.cassandra.udt.RestaurantSpecial;
import com.bdbizviz.smb.cassandra.udt.VoipInfo;
import com.datastax.driver.mapping.annotations.Frozen;


@Table("source")
public class Sources {


Integer likes;
Integer followers;
Integer rating;
String last_processedtime;
String filter_str;
String filter_type;
String category;

@PrimaryKeyColumn(ordinal=0,type=PrimaryKeyType.PARTITIONED)
String admin;

@PrimaryKeyColumn(ordinal=1,type=PrimaryKeyType.CLUSTERED)
String name;

@PrimaryKeyColumn(ordinal=2,type=PrimaryKeyType.CLUSTERED)
String source;

@PrimaryKeyColumn(ordinal=3,type=PrimaryKeyType.CLUSTERED)
Integer id;

@PrimaryKeyColumn(ordinal=4,type=PrimaryKeyType.CLUSTERED)
String type;

Integer delete_flag;
Integer evaluated;

@Frozen
Reference fb_reference_id_name ;

@Frozen
MailingAddress fb_mailingaddress;

@Frozen
CoverPhoto fb_coverphoto ;

@Frozen
VoipInfo fb_voipinfo;

@Frozen
RestaurantServices fb_restaurantservice;

@Frozen
RestaurantSpecial fb_restaurantspecialties;

@Frozen
Location fb_location;

/* Setter and Getter */
}

另一个POJO类:-

package com.bdbizviz.smb.cassandra.udt;

import org.springframework.data.annotation.Persistent;
import com.datastax.driver.mapping.annotations.Field;
import com.datastax.driver.mapping.annotations.UDT;

@UDT(name = "reference" ,keyspace="smb")
public class Reference {

@Field(name="id")
String id ;

@Field(name="name")
String name;

/* Setter and Getter */
}

共有2个答案

倪炎彬
2023-03-14
    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-mapping</artifactId>
        <version>2.1.9</version>
    </dependency>

是需要的

爱茂勋
2023-03-14

Spring Cassandra驱动程序甚至不支持UDT功能。您必须使用Cassandra的自定义驱动程序来实现此功能。

这是Cassandra Driver的maven依赖项

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-dse</artifactId>
    <version>2.1.6</version>
</dependency>
 类似资料:
  • 我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为

  • 我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?

  • 我目前在cassandra中有一个名为macrecord的表,类似于以下内容: 在这种情况下,我想不出其他解决方案,只有在macadd值重复的情况下删除整行,然后插入具有更新时间戳的新行。 是否有更好的解决方案在macadd值重复时更新时间戳,或者在我的原始表中只有macadd是主键的范围内查询时间戳值的替代方法。

  • 我正在尝试使用Cassandra 2.1升级到Spring Data Cassandra 1.5. x的Spring Boot 1.5,但出现启动错误: 未能实例化[org.springframework.data.cassandra.mapping.CassandraMappingContext]:工厂方法“cassandraMapping”引发异常;嵌套异常为java.lang.NoClass

  • Spring-data-Cassandra 1 . 3 . 2 . release是否支持@ UDT(http://docs . datas tax . com/en/developer/Java-driver/2.1/Java-driver/reference/mappingudts . html)?如果没有,我该如何添加解决方法 谢啦

  • 我对Cassandra相当陌生,在过去的一个月里读了很多书。 我正在研究一个小用例。 查询:基于在某个时间范围内播放的金额排名前 X 的玩家。 因此,在任何给定的时间范围内,我都希望汇总玩家的总游戏次数,并得出排名前X的玩家。 我遵循了创建UDF(使用C*-2.2.0版本)的方法,用于聚合AmountPlay by a Player。 下面是我为这个用例设计的时间序列数据模型。 请让我知道我的数据