使用 spring-data-cassandra 的用户定义类型

2024-05-09

我希望创建如下模型,如何在 spring-data-cassandra 中使用用户定义的类型?

{
  email: "[email protected] /cdn-cgi/l/email-protection",
  name: {
  fname: "First",
  lname: "Last"
  }
}

Spring Data Cassandra 现在支持用户定义的数据类型。最新版本 1.5.0.RELEASE 使用 Cassandra Data stax 驱动程序 3.1.3,因此现在可以运行。请按照以下步骤使其正常工作

如何将 UserDefinedType(UDT) 功能与 Spring Data Cassandra 一起使用:

  1. 我们需要使用最新的 Spring data Cassandra jar (1.5.0.RELEASE)

    组:'org.springframework.data',名称:'spring-data-cassandra',版本:'1.5.0.RELEASE'

  2. 确保它使用以下版本的 jar :

    datastax.cassandra.driver.version=3.1.3 spring.data.cassandra.version=1.5.0.RELEASE spring.data.commons.version=1.13.0.RELEASE spring.cql.version=1.5.0.RELEASE

  3. 在 Cassandra 中创建用户定义类型:类型名称应与 POJO 类中定义的名称相同

地址数据类型

CREATE TYPE address_type ( 
    id text, 
    address_type text, 
    first_name text, 
    phone text 
);
  1. 在 Cassandra 中使用其中一列作为 UDT 创建列族:

员工表:

CREATE TABLE employee( 
   employee_id uuid, 
   employee_name text, 
   address frozen, 
   primary key (employee_id, employee_name) 
);
  1. 在域类中,使用注释 -CassandraType 定义字段,并且 DataType 应为 UDT:

    @Table("employee") 
    public class Employee { 
       -- othere fields-- 
       @CassandraType(type = DataType.Name.UDT, userTypeName = "address_type") 
       private Address address; 
    }
    
  2. 为用户定义类型创建域类:我们需要确保用户定义类型模式中的列名必须与域类中的字段名相同。

    @UserDefinedType("address_type") 
    public class Address { 
        @CassandraType(type = DataType.Name.TEXT) 
        private String id; 
        @CassandraType(type = DataType.Name.TEXT) 
        private String address_type; 
    }
    
  3. 在 Cassandra 配置中,更改此:

    @Bean public CassandraMappingContext mappingContext() throws Exception { 
        BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); 
        mappingContext.setUserTypeResolver(new 
        SimpleUserTypeResolver(cluster().getObject(), cassandraKeyspace)); 
        return mappingContext; 
    }
    
  4. 用户定义的类型在所有地方都应该具有相同的名称。例如

    @UserDefinedType("address_type")
    @CassandraType(type = DataType.Name.UDT, userTypeName = "address_type")
    CREATE TYPE address_type
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 spring-data-cassandra 的用户定义类型 的相关文章

随机推荐

  • 如何获取队列中的第 n 个项目?

    我的应用程序中有许多队列和优先级队列 我想轻松访问这些队列中的第 n 个项目 但没有看到使用 API 实现此目的的简单方法 我想我可以创建一个Iterator并迭代到第 n 个元素或使用toArray index 但似乎应该有一个更简单的方
  • 替换 Javascript 中的引号?

    对于我正在制作的网络应用程序 我将收到文本字符串 其中偶尔包含引号 因为我接下来要 document writing 字符串 所以需要将它们更改为撇号或转义 我该怎么做 因为当我尝试时它似乎不起作用 特别是我认为因为字符串的引号阻止了脚本的
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • 在openjdk:7-jre-alpine docker上如何安装python 3.6

    直到大约一周前 我才在 java 图像上成功使用 python 3 6 脚本 如下所示 FROM openjdk 7 jre alpine RUN apk update apk upgrade apk add no cache bash a
  • 如何将 MSTest 集成到 TeamCity 构建过程中

    如何在 TeamCity 中运行 MSTest 作为构建过程的一部分 有哪些陷阱 此答案专门针对 Windows 上的 TeamCity 7 1 但也可能适用于其他环境 In your TeamCity build configuratio
  • 如何将 pytest 装置与 django TestCase 一起使用

    我如何在TestCase方法 类似问题的几个答案似乎暗示我的例子应该有效 import pytest from django test import TestCase from myapp models import Category py
  • 在 MVVM 中哪里可以捕获异常?

    我的视图模型类有一个连接到服务的方法 不确定这是否是一个好的实践 或者视图模型是否应该是严格的属性和属性更改机制 当然 我想在连接或断开连接时处理任何可能的 WCF 异常 让我们使用未找到端点作为示例 考虑到这是一个我想引起用户注意的异常
  • 类型不匹配:推断类型是 PluginRegistry?但 FlutterEngine 是预期的

    我想使用 Flutter Workmanager 我在 kt 中做了引用的配置 如下所示 package com example mybackprocess import be tramckrijte workmanager Workman
  • SQlite删除内连接

    我已经阅读了很多其他答案 但无法使其正常工作 select from invTypes inner join invGroups on invtypes groupID invgroups groupID where invGroups c
  • EclipseLink 2.7.0 和 JPA API 2.2.0 - 签名不匹配

    当运行由maven构建的具有以下依赖项的项目时
  • stringFromDate 始终为 NIL

    我知道这是一个重复的问题 但是在 stackoverflow 和 google 上搜索了许多类似的问题后 没有一个解决方案对我有用 我正在尝试将从数据库收到的日期转换为字符串格式以在 iPhone 应用程序中显示 我正在按以下方式将日期转换
  • OCaml 中的用户定义打印机

    printf fprintf等 全部接受 a转换 手册上说对于 a 用户定义的打印机 采用两个参数 并将第一个参数应用于 outchan 当前输出通道 和第二个参数 因此 第一个参数的类型必须为 out channel gt b gt un
  • 按度数在圆上找到一个点?

    假设我们有一个 100x100 坐标系 如下所示 0 0 是它的左上角 50 50 是它的中心点 100 100 是它的右下角 等等 现在我们需要从中心向外画一条线 我们知道线的角度 但需要计算其终点的坐标 您认为最好的方法是什么 例如 如
  • 有时 git 告诉我每个文件都是新的且未暂存?

    我将对文件进行更改 转到 Windows UI 的 GitHub 提交我的更改 然后点击同步按钮 然后它说错误 尝试使用 shell 代替 所以我进入 shell 并输入git status 它告诉我存储库中的每个文件都是新的且未暂存 大约
  • Android EditText 不起作用,android:imeOptions="actionNext" android:inputType="phone"

    我已经尝试过了 只有删除android inputType phone 键盘回车可以跳转到下一个EditText 不知道大家之间是否有过一些冲突android imeOptions actionNext and android inputT
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 仅当未找到文件时才重定向请求?

    我希望有一种方法可以使用 mod rewrite 和 Apache 来做到这一点 但也许还有另一种方法可以考虑 在我的网站上 我为客户的网站重新设计版本设置了目录 如果网络根目录是 home blah www 客户端目录将是 home bl
  • 如何使用 Expo 播放 Youtube 视频

    我正在尝试使用反应本机 YouTube 组件 https github com inProgress team react native youtube在我的世博项目中 但是 我无法让它发挥作用 到目前为止 我所拥有的只是带有红色边框的黑屏
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • 使用 spring-data-cassandra 的用户定义类型

    我希望创建如下模型 如何在 spring data cassandra 中使用用户定义的类型 email email protected cdn cgi l email protection name fname First lname L