我在spring data jdbc中使用简单的crud操作和审计。因此,当我插入新记录时,审计工作完全正常。但是当我更新我的记录时,我的createdby和createddate设置为null。有什么方法可以避免修改这些列吗?
注意:column(可更新= false)特性不支持spring data jdbc。
我的审计实体如下所示:
@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。
触发器基本上帮助您记录、观察和验证数据的任何更改(数据库行)。
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
在应用程序中捕获此异常,并向客户端显示错误消息。
研究数据库触发器,它们将帮助您。然而,随着表中数据的增长,您将不得不承担一点延迟的代价。
我正在使用Spring-Boot 2.5.0和MongoDB来持久化一些文档。这里是Github项目。 对于每个文档,我还需要自动保存一些审计信息,因此我扩展了以下类: 例如。让我们考虑类: 我遇到的问题是,当我通过JSON更新文档时,我能够更改/覆盖CreatedBy和CreatedDate字段的值。 这意味着,如果未提供字段,则结果值将保存为null,否则,它将为创建者和创建的字段保存新值。
我使用的是Spring数据JDBC。 我有一个实体,其中的字段用
我正在使用Spring Mongo审计和@CreatedDate@CreatedBy不工作,但@LastModifiedDate和@LastModifiedBy工作正常。 我在配置类上添加了@EnableMongoAudting,并定义了AuditAware。 审核类别为: 当我保存文档时,它在createdOn和createdBy中都设置为null,但在modifiedOn和modifiedBy
我使用的是spring boot,因此我没有使用任何xml文件进行配置。我要做的是,在使用MongoRepositories保存数据时,启用OngOAuditing以保存createdDate、lastModifiedDate等。 我的模特课 我使用@CreateDate注释来保存createDate。我对DateTime使用了jodatime依赖项 Spring-data-mongoDB也添加在
我正在尝试将与spring-data-jdbc和PostgreSQL数据库结合使用,以跟踪首次创建表条目的时间。当插入新行时,这有效(它正确地将其设置为当前日期),但是在更新条目时,我得到异常,因为它被设置为null,这是我的配置不允许的。 这是我的实体(省略了其他不相关的字段): 这是我的存储库: 这是相关的配置: 使用方法,第一次正确设置了。当使用相同的方法更新现有实体时,当我希望跳过字段时,
我正在尝试设置(作为一个java初学者)SpringJPA审计,时间为数小时/天。。。我开始感到非常沮丧,因为我找不到问题。我真的很感谢你的帮助。 @LastModifiedBy和@LastModifiedDate注释正在工作,但@CreatedBy和@CreatedDate始终为空。 下面是sql查询调试输出:2017-06-16 16:40:39[main]DEBUG n.t.d.l.l。SL