1. 引言
涉及的开发技术面广了以后,很多东西掌握了,一段时间没接触、没配置,就又忘了,所以得靠“烂笔头”多记,多总结点。
2. 配置点
- 在MainApplication上增加@EnableJpaAuditing注解
... 省略
@EnableJpaAuditing
public class MainApplication
{
... 省略
- 注册获得操作者的方法
@Configuration
public class AuditorConfig implements AuditorAware<String>
{
@Override
public Optional<String> getCurrentAuditor()
{
return Optional.of(JCommon.defaultIfEmpty((String)AppContext.getThreadLocal("userId") , AppConsts.sUserId_sys)) ;
}
}
- Bean的设置要求
@Entity
@Table(name="table_name" , indexes = {
@Index(columnList = "parent_id")
})
@org.hibernate.annotations.Table(appliesTo = "table_name" , comment = "注释")
@Data
@JsonInclude(value = Include.NON_NULL)
// 下面这个注解得有
@EntityListeners(AuditingEntityListener.class)
public class Bean
{
@ApiModelProperty("创建者")
@Column(name="create_userid" , length = 32)
@Comment("创建者")
@CreatedBy
String createUserId ;
// 获取对象的时候,临时查询设置,不持久化存储
@ApiModelProperty("创建者显示名")
@Transient
String createUserDisplayName ;
@ApiModelProperty("最近一次修改者")
@Column(name="last_edit_userid" , length = 32)
@Comment("最近一次修改者")
@LastModifiedBy
String lastEditUserId ;
// 获取对象的时候,临时查询设置,不持久化存储
@ApiModelProperty("最近一次修改者的显示名")
@Transient
String lastEditUserDisplayName ;
@ApiModelProperty("创建时间")
@Column(name="create_time")
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
Date createTime ;
@ApiModelProperty("最近一次修改时间")
@Column(name="last_edit_time")
@LastModifiedDate
@Temporal(TemporalType.TIMESTAMP)
Date lastEditTime ;
- 在更新/创建 数据对象的方法内,向线程上下文设置操作者
... 省略
@PostMapping(...省略
public List<String> controller的方法(
... 省略其它参数
, @RequestParam("userId") String aUserId)
{
AppContext.setThreadLocal("userId" , aUserId);
... 省略