JPA约束日期年份

时间:2012-04-13 13:32:17

标签: java jpa unique-constraint

我有一个代表文档的实体,如下所示:

文档 date_creation doc_number doc_origin

文档通常被称为'2012 / XY / 005',这将是2012年由XY发起的第五个文档。 所以数字在它创建的年份和同一个Origin中必须是唯一的,我需要为它设置一个约束。

使用JPA对此进行建模和映射的最佳方法是什么?

我认为我的选择是:

选项1:将另一个字段设置为创建日期的年份的Document实体,并使其唯一(year,doc_number,doc_origin)

选项2:创建一个字段doc_ref,并输入一个类似'YEAR / ORIG / NUMBER'的字符串并使其唯一(doc_ref)

两个选项都添加了另一个复制年份的字段,但选项1要求我使用date_creation更新字段年度,而选项2要求我与其他字段一致地更新字段doc_ref,因此我倾向于认为选项1是最佳的。< / p>

我还有其他选择吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的数据库允许,您可以使用基于函数的唯一索引。 Oracle中的示例:

CREATE UNIQUE INDEX YEAR_ORIGIN_NUMBER_IDX 
on DOCUMENT (TRUNC(DT_CREATION, 'YEAR'), DOC_ORIGIN, DOC_NUMBER)