@CreatedBy 和 @LastModifiedBy 设置实际实体而不是 id

2024-03-02

我有一个看起来像这样的实体:

@Audited
@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

  public static final long UNSAVED = 0;

  @Id
  @GeneratedValue
  private long id;

  @CreatedDate
  @Column(name = "created_at", updatable = false)
  private ZonedDateTime createdAt;

  @CreatedBy
  @OneToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "created_by")
  private User createdBy;

  @LastModifiedDate
  private ZonedDateTime updatedAt;

  @OneToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "updated_by")
  @LastModifiedBy
  private User updatedBy;

}

我想要 @LastModifiedBy 和 @CreatedBy 以便它们设置相应的用户。但是,当我尝试保存实体时,出现异常:

java.lang.ClassCastException: Cannot cast java.lang.Long to com.intranet.users.Users

所以在我看来,它试图设置的不是实际的用户,而是 id。有没有什么方法可以让 spring 在实体上设置实际用户而不仅仅是它的 id ?

Thanks


这似乎很直接地回答了文档 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#auditing.auditor-aware:

如果您使用@CreatedBy或@LastModifiedBy,审核 基础设施需要以某种方式了解当前的主体。 为此,我们提供了一个 AuditorAware SPI 接口,您必须 实现告诉基础设施当前用户或系统是谁 与应用程序交互是。泛型类型 T 定义了什么 键入用 @CreatedBy 或 @LastModifiedBy 注释的属性 成为。

以下示例显示了该接口的实现 使用 Spring Security 的 Authentication 对象:

示例 104. 基于 Spring Security 的 AuditorAware 实现

class SpringSecurityAuditorAware implements AuditorAware<User> {

  public Optional<User> getCurrentAuditor() {

    return Optional.ofNullable(SecurityContextHolder.getContext())
        .map(SecurityContext::getAuthentication)
        .filter(Authentication::isAuthenticated)
        .map(Authentication::getPrincipal)
        .map(User.class::cast);   
  } 
} 

该实现访问 Spring Security 提供的 Authentication 对象并查找 您在中创建的自定义 UserDetails 实例 UserDetailsS​​ervice 实现。我们在这里假设您是 通过 UserDetails 实现公开域用户,但是 根据找到的身份验证,您还可以查找它 来自任何地方。

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

@CreatedBy 和 @LastModifiedBy 设置实际实体而不是 id 的相关文章

  • 匿名内部类显示不正确的修饰符

    据我了解 以下代码应该打印true作为输出 但是 当我运行这段代码时 它正在打印false 来自 Java 文档15 9 5 匿名类 https docs oracle com javase specs jls se8 html jls 1
  • 如何用Java创建图像

    比如说在我的程序中 我有这个paint 方法 我的愿望是创建所绘制的矩形的图像 使用 for 循环 我尝试了下面的方法 它确实给了我那些矩形 蓝色 但背景是全黑的 当我运行程序而不创建图像 仅在 JFrame 上绘制矩形时 背景为白色 我怎
  • 如何在流中收集到TreeMap中?

    我有两个Collectors groupingBy在流中 我需要收集所有信息TreeMap 我的代码 Map
  • Jackson Json 将对象反序列化为列表

    我正在使用 Spring 的 Web 服务RestTemplate并反序列化Jackson 在来自服务器的 JSON 响应中 其中一个字段可以是对象或列表 这意味着它可以是 result or result 有没有办法通过对我要反序列化的类
  • 如何检查字符串是否具有特定模式[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 用户输入任意字符串 程序会区分该字符
  • @NotNull.List 的目的

    当我查看标准时限制条件 http docs oracle com javaee 6 api javax validation constraints package summary html在 Bean Validation API JSR
  • Java 中的本机方法

    我花了一些时间学习什么是 Java Native 方法以及它们是在平台相关代码 主要是 C 中实现的 但是我在哪里可以找到这些 Java 的本机实现呢 例如 Thread 类的 sleep long millis 方法是本机的 但它的实现代
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • Java - 同步方法导致程序大幅减慢

    我正在尝试了解线程和同步 我做了这个测试程序 public class Test static List
  • 如何将 wsdl 内部架构设置为 Jaxb2Marshaller 以验证我所做的每篇文章?

    我正在使用 SOAP Web 服务 在调用它之前我必须验证每个 xml 帖子 所以我正在使用 The CXF codegen 插件生成POJO树结构 第三部分 wsdl xxxx soap service wsdl 一个类实现Web服务网关
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 如何连接hibernate和DB2

    我正在运行一个使用 struts 和 hibernate 的应用程序 我目前正在使用 Derby 数据库 现在我必须转向 DB2 数据库 请告诉我 我必须做什么配置 休眠配置文件 我必须设置任何类路径吗 多变的 我知道 DB2 有两个 ja
  • 如何将 currentTimeMillis 转换为可读的日期格式? [复制]

    这个问题在这里已经有答案了 我想用currentTimeMillis两次 这样我就可以计算持续时间 但我也想以用户可读的格式显示时间和日期 我遇到了麻烦currentTimeMillis有利于计算 但我看不到内置函数可以转换为合适的时间或时
  • Spring @Value 添加验证小于

    我使用以下属性值注入 我如何向此操作添加小于验证 我的意思是我想设置一个验证user maxpassiveday可以说 财产价值不得低于 100 Value user maxpassiveday int maxpassiveday 使用Sp
  • 如何使用 UUID 生成唯一的正 Long

    我需要为我的数据库主键列生成唯一的长 ID 我以为我可以用UUID randomUUID getMostSignificantBits 但有时它也会产生一些负多头 这对我来说是个问题 是否可以从 UUID 中仅生成正长 将会有数十亿个条目
  • kafka Avro 多个主题的消息反序列化器

    我正在尝试以 avro 格式反序列化 kafka 消息 我使用以下代码 https github com ivangfr springboot kafka debezium ksql blob master kafka research c
  • WebSocketStompClient 将无法连接到 SockJS 端点

    我正在尝试新的 从版本 4 2 开始 java STOMP 客户端支持 我的出发点是入门指南 使用 WebSocket 构建交互式 Web 应用程序 http spring io guides gs messaging stomp webs
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • 如何正确使用Google Calendar API Events.Insert命令?

    所以我一直使用REST方法来调用Google的API 我需要将事件插入到我拥有 ID 的特定日历中 这是我发送的 POST 请求 地址 https www googleapis com calendar v3 calendars https
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器

随机推荐

  • 将 Numpy 矩阵显示为视频

    我有一个 numpy 矩阵 其中每一行都是一张图片 我可以重塑行并使用 matplotlib pyplot 显示图像 问题是 我不想单独显示图像 我想像视频一样依次显示它们 这在Python中怎么可能呢 好吧 我不知道这是否是最好的方法 但
  • 包含(大多数)所有元素的 HTML 页面,用于样式设置

    是否有人拥有或知道包含所有元素 带有口语文本或其他内容 的 HTML 页面 我可以做一个 但我想一定有人已经这样做了 当开始一个项目时 我喜欢为链接 列表 表格等设置一些基本样式 包含所有元素的 HTML 页面将帮助我加快此过程 我很乐意创
  • 如何在 iOS 6 中启动具有特定地址的 iOS 地图应用程序?

    我有一个应用程序 允许用户启动地图应用程序 Google 或 Apple 来查看地址 我曾经这样做过 Address address self person addresses objectAtIndex 0 NSString addres
  • 访问页面时自动点击页面上的锚链接

    我之前问过这个问题 但一些专家告诉我补充一下 这可以重新加载给定的链接 但我想知道如何在 id 的帮助下单击元素 锚点 是否有任何代码在执行时会单击 id dp99 并且我希望在访问页面时执行此 javascript 这是 HTML a h
  • Cordova、iOS 和 iframe 不会加载内容,除非我允许访问 href="*"

    我有一个网络应用程序 它有一个嵌入式地图字段 它是使用 iframe 实现的https maps google com https maps google com 我正在将我们的应用程序 当前作为主屏幕图标运行 移植到 iOS 上的 Cor
  • 在 C++ 中将数据从一个线程发送到另一个线程的最快方法是什么?

    我尝试过构建一个简单的生产者 消费者程序的实验 它们在单独的线程中运行 生产者生成一些数据 消费者在另一个线程中获取它 我实现的消息传递延迟约为 100 纳秒 谁能告诉我这是否合理或者是否有更快的实现 我没有使用锁 只是简单的内存计数器 我
  • OpenGL 中的动画 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想请您分享一些关于如何在 OpenGL 应用程序中实现动画支持的想法 例如 如果我们希望在用户输入触发某些事件的情况下 在屏幕上为球
  • 增加 Kafka 消费者在单次轮询中读取的消息数量

    Kafka消费者有一个配置max poll records它控制单次调用 poll 及其返回的最大记录数默认值为 500 https kafka apache org documentation max poll records 我已将其设
  • 如何判断一个点(X,Y)是否包含在圆的弧段内(即饼图切片)?

    想象一个圆圈 想象一下一个馅饼 想象一下 尝试返回一个布尔值 该布尔值确定所提供的 X Y 参数是否包含在这些饼图块之一中 我对弧线的了解 我有 CenterX CenterY 半径 StartingAngle EndingAngle St
  • 如何加快 AWS 设备场上的 Selenium 测试速度?

    我正在使用 Python 在 AWS 设备场上进行测试 看来开始使用硒需要非常非常长的时间 这是我使用的代码 from time import time from boto3 import client from selenium impo
  • 增加 sas 内存/memsize

    您好 有一个包含大约 6000 个观测值和 250 个变量的数据集 我正在尝试使用 proc mix 在 sas 中运行混合模型 但我不断收到 错误 由于内存不足 sas 系统停止处理此步骤 我尝试了康奈尔大学的方法 http www ci
  • 为什么@RequestBody得到一个带有null属性的对象

    我有一个 springboot REST 控制器 其中包含所示的 PATCH 和 PUT 请求方法 由于某种原因 RequestBody 公司 的字段 属性作为空值出现 我缺少什么 我在前端使用 angular8 它正在执行 PATCH 调
  • 在移动网站上禁用 JavaScript

    我的网站上有一个聊天小部件 它占据了手机的整个屏幕 如何在一定宽度的设备 或手机 上禁用聊天设备
  • “可视化页面编辑器对 Windows 64 位提供实验性支持”

    我正在使用 Eclipse Luna 和 JBoss AS 7 当我在 Eclipse 中创建 JSP 页面时 出现以下错误 我将服务器更改为 Tomcat 7 但仍然遇到相同的错误 这是如何引起的以及如何解决 该可视化页面编辑器是JBos
  • 扩展 Javascript Promise 并在构造函数内解析或拒绝它

    我想用 ES6 语法扩展原生 Javascript Promise 类 并且能够在子类构造函数中调用一些异步函数 根据异步函数结果 承诺必须被拒绝或解决 然而 当then函数被称为 子类构造函数执行两次 抛出 未捕获的类型错误 Promis
  • Oracle 中删除和删除清除之间的区别

    我正在使用 Oracle 数据库 但我对删除和清除命令有点困惑 事实上对我来说两者都做同样的事情 从数据库中删除具有架构的表 这两者之间的主要区别是什么 删除表表名 删除表表名清除 通常 如果表被删除 则会将其移至回收站 从 Oracle
  • ScalaTest 可以为所有子项目生成一个 HTML 报告吗?

    我正在尝试使用 ScalaTest 使用 Scala 2 11 0 和 SBT 0 13 x 为具有许多子项目的项目生成单个 HTML 报告 为此 我将以下行放入 build sbt 中 testOptions in ThisBuild T
  • Jetty 11 未检测到 Jakarta Servlet

    这是后续this https stackoverflow com questions 66361859 jetty 11 doesnt detect servlets问题 我不认为这是重复的 因为接受的答案表明 Jetty 11 不能与ja
  • pandas dataframe 在整行中搜索字符串

    我有一个如下所示的熊猫数据框 我想在数据帧的每一行中搜索文本 并突出显示该文本是否出现在该行中 例如 我想在每一行中搜索 jones 我想忽略搜索词的大小写 在下面的情况下 我想向名为 jones 的数据添加一个新列 它的值将是 1 1 0
  • @CreatedBy 和 @LastModifiedBy 设置实际实体而不是 id

    我有一个看起来像这样的实体 Audited Data MappedSuperclass EntityListeners AuditingEntityListener class public abstract class BaseEntit