如何使@CreatedBy和@CreatedDate在Spring数据jdbc中不可修改?

2023-12-23

我在 spring data jdbc 中使用简单的 CRUD 操作和审计。因此,当我插入新记录时,审计工作绝对正常。但是当我更新我的记录时,我的创建者和创建日期设置为空。有什么方法可以避免修改这些列吗?

注意:spring data jdbc 不支持 column(updatable= false) 功能。

我的审计实体如下所示:

@Data // lombak
public class AuditEntity {
  @JsonIgnore
  @LastModifiedDate
  private String updatedOn;
  @JsonIgnore
  @LastModifiedBy
  private String updatedBy;
  @JsonIgnore
  @CreatedDate
  private String createdBy;
  @JsonIgnore
  @CreatedBy
  private String createdOn;

}

并使用 @EnableJdbcAuditing 进行配置并定义以下 bean

@Bean
  AuditorAware<String> auditorAware() {
    return new CustomAuditAware();
  }

我的自定义审核感知如下所示

public class CustomAuditAware implements AuditorAware {
  @Override
  public Optional getCurrentAuditor() {
    return Optional.ofNullable(
        "System");
  }
}

是的,据我所知这是不可能的。由于MySQL不限制任何列中数据的更改。

然而,开发人员利用TRIGGER https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html.

触发器基本上可以帮助您记录、观察和验证数据(数据库行)的任何更改。

create trigger check_if_a_column_has_changed on your_table
-- before update
   pull your old column value and check if it has been changed, 
   throw error if data been changed

在您的应用程序中捕获此异常并向您的客户显示错误消息。

研究数据库触发器,它们会对你有帮助。但是,随着表中数据的增长,您将不得不承担一点延迟的成本。

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

如何使@CreatedBy和@CreatedDate在Spring数据jdbc中不可修改? 的相关文章

随机推荐

  • EGIT 分支本地与远程跟踪

    我是 GIT 新手 我将 EGIT 与 eclipse 一起使用 我有一个关于分支机构的问题 我在其中看到 本地 和 远程跟踪 两个部分 如果我必须在其中一个分支机构工作 我认为有两种方法可以完成它 a 检查远程跟踪下的 origin fe
  • Yii2 - 将变量从视图传递到 Gridview 自定义操作列

    我想保存用户在单击页面的 gridview 小部件中的 编辑 按钮之前访问的最后一个位置 我创建了一个名为 lastAddress 的变量 但我真的不知道如何将其传递到 gridview 并将其附加到 编辑 按钮的 url 变量中 谁能告诉
  • SecTrustEvaluate 上始终为 EXC_BAD_ACCESS

    我在用苹果的示例代码 https developer apple com library mac documentation security conceptual CertKeyTrustProgGuide iPhone Tasks iP
  • 在 OpenGL 上映射 Wavefront .obj 纹理顶点

    一位艺术家给了我所有 3D 模型 让我导出为 obj 和 mtl 以便我可以使用 OpenGL 渲染它 但我不明白为什么纹理顶点大于 1 有时甚至是负值 看一下这个例子 vn 0 000717425 0 00106739 0 0099169
  • 错误:在 Android 中添加“splits”后找不到 EOCD

    我在 gradle 中使用以下拆分代码来减小 APK 大小 splits abi Enable ABI split enable true Clear list of ABIs reset Specify each architecture
  • 如何依赖注入 SignInManager?

    我有一个 Web API 应用程序 我正在使用第 3 方身份验证 Firebase 身份验证 我的身份验证工作正常 但一旦用户登录到我的服务器 我想将凭据和用户数据保存到我的 ASP NET Identity 表中 如果我在 Startup
  • PHP:在包含文件中“使用”? [复制]

    这个问题在这里已经有答案了 在 PHP 中使用命名空间时 您可以执行以下操作 是否可以将 use 行放入包含文件中 如果有几十个这样的 use 语句 那么将它们写入您需要它们的每个文件中是非常烦人的 但 use 语句仅适用于当前文件 并且在
  • cookie 和桌面应用程序

    据我所知 网站会向浏览器发送 cookie 以维护某些状态 浏览器会将其存储在本地 当再次访问该网站时 浏览器会将这些 cookie 作为请求的一部分发送回网站 我的印象是 cookie 是浏览器特定的东西 我想澄清这一理解 连接到 Web
  • 如何找到 COM prog id?

    我想通过后期绑定访问 COM 库 我怎样才能找到它的progID Type oClassType Type GetTypeFromProgID THE MISSING PROGID progID 通常采用 Library Class 形式
  • 更新单元格电子表格时,请求的身份验证范围不足 [403]

    在 Google Developer Console 中 Sheet API 已启用 我使用与访问电子表格相同的密钥 当我读取数据时 一切正常 我在 requestUp Execute 上收到请求身份验证范围不足的错误 using Syst
  • 正则表达式lookbehind (JS) 中的可选字符

    我正在尝试使用正则表达式来解析模板中的一些内容 有开始标签和结束标签 但我只想选择这些标签之间的内容 以便我可以 String replace 内容看起来像这样 OpenTag The Content I want CloseTag Ope
  • JHipster Eclipse 项目在“main”中运行内存不足

    我正在构建一个基线 JHipster 项目 不涉及任何附加功能 没有集群等 我使用标准的支持 Node 的 当然 命令行遵循确切的教程步骤 然后将项目作为 Maven 项目导入到 Eclipse 中 根据检查项目 一切看起来都应该工作正常
  • 通过API获取Hbase区域大小

    我正在尝试为 Hbase 编写一个平衡器工具 它可以按区域计数和 或区域大小 storeFile 大小的总和 平衡表的区域服务器之间的区域 我找不到任何返回区域大小或相关信息的 Hbase API 类 我已经检查了一些可用于获取其他表 区域
  • Android JNI - 将 jstring 转换为 wchar_t 的可靠方法

    在我的 Android JNI 代码中 我需要将 jstring 转换为 wchar t 我找到的最接近的参考是如何将 jstring 转换为 wchar t https stackoverflow com questions 68042
  • ASP.NET MVC:返回重定向和ViewData

    我的 MasterPage 中有一个登录框 每当登录信息不正确时 我都会评估ViewData loginError 向用户显示错误消息 登录是 UserController 的一个操作 因此包含登录的表单有action User Login
  • 访问对象数组中的 object.variable

    我需要这段代码的帮助 public class ParkingLot static int MAX 5 static Car Slot new Car MAX public static void main String args Slot
  • Postgresql COPY CSV 错误:最后一个预期列后有额外数据

    我正在尝试从以下位置导入数据http www unitedstateszipcodes org zip code database http www unitedstateszipcodes org zip code database 数据
  • Android NDK 生成不合理的大二进制文件,如何优化 .so 大小?

    我注意到 Android NDK r6b在我的例子中 产生不合理的大结果 so 文件 例如 在我的例子中 我有大约 150 200 行 C 代码 6 个本机方法和 3 个 C 最简单的类 并且此本机代码生成60kb 具有启用的异常和 RTT
  • 调试时“myapp.exe 已触发断点” - 随后 Visual Studio 2015 Update 3 中的符号加载速度缓慢

    我们有一个 STA 模式的 C 项目 它打开一个托管 ESRI ArcEngine 的 C WPF 库MapControl通过 WindowsFormsIntegration 这在 Visual Studio 2013 中工作得很好 自从我
  • 如何使@CreatedBy和@CreatedDate在Spring数据jdbc中不可修改?

    我在 spring data jdbc 中使用简单的 CRUD 操作和审计 因此 当我插入新记录时 审计工作绝对正常 但是当我更新我的记录时 我的创建者和创建日期设置为空 有什么方法可以避免修改这些列吗 注意 spring data jdb