@Id 注解属性的 Kotlin 内联类

2024-02-27

在我的业务逻辑中,我必须处理很多实体 ID,所有这些 ID 都是类型String,这可能会导致混乱,尤其是当您将其中几个作为方法参数传递时。所以我考虑引入一点类型安全内联类。我知道,内联类在 v1.3 中仍然被标记为实验性的。然而,有没有人尝试过使用内联类 as the @Id数据库映射上下文中的属性,在我的例子中是带有 Spring Data 的 MongoDB。

@Entity
class User {
   @Id
   var id: UserId
}

with

inline class UserId(val id: String)

我猜底层属性没有拆箱,所以 _id 最终会作为数据库中的对象? Spring 的 CrudRepository 接口又如何呢?它似乎可以编译,但最终会起作用:

interface UserRepository : CrudRepository<User, UserId>

可能正在使用AttributeConverter将内联类转换为原始可能会完成这项工作。有这方面的经验吗?


作为对 @JuergenZimmermann 答案的更新,从版本 3.2(当前是候选版本)开始,Spring Data Commons 就支持这一点:

https://github.com/spring-projects/spring-data-commons/releases/tag/3.2.0-M1 https://github.com/spring-projects/spring-data-commons/releases/tag/3.2.0-M1

然后OP编写的代码应该按照给定的方式工作。更详细的讨论请参见这里:https://github.com/spring-projects/spring-data-commons/pull/2866 https://github.com/spring-projects/spring-data-commons/pull/2866

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

@Id 注解属性的 Kotlin 内联类 的相关文章

随机推荐

  • Unity 同一物体上的多个碰撞器

    我在同一个游戏对象上使用多个盒子碰撞器 问题是 是否可以使用单独引用每个碰撞器gameObject getComponent enabled false 请记住 我的碰撞器很少 我希望其中一些碰撞器保持启用状态 而其他碰撞器将被禁用 我所做
  • 通过 jest mock 测试 catch 块

    我试图通过玩笑来测试异步 redux 操作的 catch 块 但是在模拟中抛出一个 catch 会导致整个测试失败 我的行动如下 export function loginUser username password return asyn
  • 使用 Google Apps 脚本操作 DOM

    是否可以隐藏 display none 某些标签并使用 Google Apps 脚本更改 Gmail 下拉列表中的标签顺序 标签 移动 不会 Google Apps 脚本在服务器端运行 它无法访问 Gmail Calendar 或 Shee
  • XStream arrayList 与 XML 之间的转换

    我目前不知道问题出在哪里 第一次使用 xml 我在将 ArrayList 放入 xml 文件并从中取出它时遇到了一些问题 我发现了这个 我尝试以同样的方式做 如何使用 XStream 将对象列表转换为 XML 文档 https stacko
  • Python自动选择串口(适用于Arduino)

    目前 Python 程序必须知道设备 Arduino 位于哪个端口 然后 Python 才能与设备进行通信 Problem 每当设备拔出并重新插入时 其 COM 端口都会发生变化 因此必须再次向 Python 提供正确的串行端口 以便它找到
  • 为什么 Android 6 上没有授予 GCM 权限?

    背景 我正在尝试调查办公室的应用程序需要更改其权限 以便更好地支持 Android 6 问题 我发现哪些权限需要确认 哪些不需要 除了以下一项
  • 运行程序所花费的时间

    如何在文本框或输出中打印程序运行时间 我希望将其显示到 for 循环中 以获取每个 for 循环需要多少时间 你可以尝试 DateTime dt DateTime Now for TimeSpan ts DateTime Now dt te
  • 如何使用其他 Angular 组件中的“templateref”?

    如何使用templateRef来自其他组件模板文件 I have BatmanComponent SpidermanComponent and a JokerComponent 其中一些具有相似的功能 因此我决定创建一个HumanCompo
  • Xamarin 自定义表视图标头

    我想在表视图部分标题的标题中添加一个按钮 即加号按钮 经过研究发现 要做到这一点 您必须创建一个自定义标题 我不知道该怎么做 如何在 xamarin 中为表视图部分创建自定义标头 我也使用 Xaml 和 C 请参阅这些博客文章 https
  • 使用自定义字体为警报对话框项目设置字体

    我正在这样创建一个警报对话框 AlertDialog Builder alertDialog new AlertDialog Builder view getContext alertDialog setCustomTitle null a
  • 使用 where 和 offset fetch 子句的简单选择在 Oracle 中不起作用

    我正在尝试选择行where条件并且需要分页 所以我添加了Fetch with offset 使其动态 子句 但随后它给出了此错误 ORA 00933 SQL 命令未正确结束 位置 414 我的查询 SELECT up NAME upozil
  • 是否可以使用ggplot2中的facet_grid()让annotation_logtics()仅出现在一个子图上?

    我使用以下代码在 ggplot2 中使用facet grid 创建一个包含三个子图的图 day lt c 5 Aug 5 Aug 5 Aug 10 Aug 10 Aug 10 Aug 17 Aug 17 Aug 17 Aug station
  • [myArray addObject:[[objcBlock copy] autorelease]] 在释放数组时崩溃

    我编写了一个类来声明性地描述 UIView 动画序列 我的方法采用动画块的可变参数并将它们放入数组中 所以在我的循环中我想这样做 animations addObject block copy autorelease I first cop
  • 正则表达式匹配回句点或字符串开头

    我想匹配一个单词 然后获取它之前的所有内容 直到第一次出现一个句点或字符串的开头 例如 给定此字符串并搜索单词 regex s Do not match this Or this Or this either I like regex It
  • Elasticsearch 不返回单数/复数匹配项

    我正在使用 elasticsearch 的 php 库来索引和查找我的网站中的文档 这是创建索引的代码 curl XPUT http localhost 9200 test d index numberOfShards 1 numberOf
  • 如何在 SVG 中导出 PNG

    我在导出包含 PNG 图像的 SVG 时遇到一些问题 我在用着D3JS和以下代码 mysvg append image attr width 299 attr height 168 attr xlink href image png var
  • Passport.js 支持ajax 吗?

    我想用passport js进行ajax登录 我有设置 Passport js 的常用代码 route app post api auth login passport authenticate local login successRed
  • 协议“Line”只能用作通用约束,因为它具有 Self 或关联类型要求

    我正在快速使用协议 我认为它类似于其他语言中的 界面 我正在测试它如何处理变量 协议对我来说相当新 因为我从未见过带有非静态变量的接口 我创建了一个车站协议 protocol Station var id String get set va
  • 如果没有 .cs 文件,Web 应用程序将无法发布

    我有一个 asp net Web 应用程序项目 正在通过 Visual Studio 2013 中的 生成 gt 发布 来发布 我正在使用所选的预编译选项发布到文件系统 我的项目在打包 发布 Web 设置屏幕中选择了 仅运行此应用程序所需的
  • @Id 注解属性的 Kotlin 内联类

    在我的业务逻辑中 我必须处理很多实体 ID 所有这些 ID 都是类型String 这可能会导致混乱 尤其是当您将其中几个作为方法参数传递时 所以我考虑引入一点类型安全内联类 我知道 内联类在 v1 3 中仍然被标记为实验性的 然而 有没有人