数据库规范
- 每张表必须有主键id字段,和create_user_id/create_time/update_user_id/update_time/deleted/id这些字段。
- 其中create_user_id/create_time/update_user_id/update_time标识创建人/创建时间,修改人/修改时间
- deleted标识数据已被删除
- id标识主键
有些场景下可能还需要account_id- 特殊情况,如中间表,可以没有id字段,但一定要有主键字段
在jpa实体中,以前是这样的,
@MappedSuperclass
@Data
public abstract class JpaBasePersist<I extends Serializable> implements Serializable {
}
@EqualsAndHashCode(callSuper = true)
@MappedSuperclass
@Data
public abstract class JpaIdBasePersist<I extends Serializable> extends JpaBasePersist<I> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private I id;
}
@EqualsAndHashCode(callSuper = true)
@MappedSuperclass
@Data
public abstract class JpaLongIdBasePersist extends JpaIdBasePersist<Long> {
}
@EqualsAndHashCode(callSuper = true)
@MappedSuperclass
@Data
public class JpaCrudLongIdBasePersist extends JpaLongIdBasePersist {
@Column(name = "create_time", insertable = false, updatable = false)
// @Temporal(TemporalType.TIMESTAMP)
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Column(name = "update_time", insertable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
@Column(name = "create_user_id", nullable = false, updatable = false)
private Long createUserId;
@Column(name = "update_user_id", nullable = false)
private Long updateUserId;
}属于过度设计了,可以优化成一个JpaCrudLongIdBasePersist类,就够用了。
作者:张三 创建时间:2025-07-06 21:12
最后编辑:张三 更新时间:2026-06-09 12:07
最后编辑:张三 更新时间:2026-06-09 12:07