在Spring Boot / Spring Data的JPA中,我想建立一个实体类。
业务要求是对每年存在一次的文档的处理进行历史记录。
处理以批量方式执行:因此所有文档一起处理:对于每个处理顺序,数据库中的所有文档都有一个 processingTimestamp
。
稍后,我想只访问最近处理的文档,但保留以前处理过的文档以供参考。
我看到以下替代方案:
使用复合键
@Id
private String documentId;
@Id
private String yearOfDocumentCreation;
@Id
private java.sql.Timestamp processingTimestamp;
使用自动生成的密钥
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String documentId;
private String yearOfDocumentCreation
private java.sql.Timestamp processingTimestamp;
哪种替代方案是关于
的更好/最佳做法或者我是否会错过其他选择/方面?
答案 0 :(得分:1)
如果您需要为此表创建外键,我建议使用单个Long主键。 为了避免使用dublicates,您可以对3个必需列进行唯一约束。