我有一个代表文档的实体,如下所示:
文档 创建日期 文档编号 文档来源
文件通常被称为'2012/XY/005',这将是XY在2012年发起的第五份文件。 因此数字在其创建年份必须是唯一的,并且对于相同的来源,我需要为其设置一个约束。
使用 JPA 对此进行建模和映射的最佳方式是什么?
我认为我的选择是:
选项 1: 在日期创建中将另一个字段作为年份的文档实体,并使其唯一(年份,doc_number,doc_origin)
选项 2: 创建一个字段 doc_ref 并放入一个字符串,如 'YEAR/ORIG/NUMBER' 并使其唯一(doc_ref)
这两个选项都添加了另一个字段来复制年份,但是选项 1 要求我更新字段年份与 date_creation 一致,选项 2 要求我更新字段 doc_ref 与其他字段一致,所以我倾向于认为选项 1 是最好的。
还有其他我没有看到的选项吗? 谢谢!
最佳答案
如果您的数据库允许,您可以使用基于函数的唯一索引。 Oracle 中的示例:
CREATE UNIQUE INDEX YEAR_ORIGIN_NUMBER_IDX
on DOCUMENT (TRUNC(DT_CREATION, 'YEAR'), DOC_ORIGIN, DOC_NUMBER)
关于java - 日期年份的 JPA 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10141826/