java - 日期年份的 JPA 约束

标签 java jpa unique-constraint

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

文档 创建日期 文档编号 文档来源

文件通常被称为'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/

相关文章:

java - 无法初始化 cipher.init()

java - JPA实体设计/无法删除实体

java - Hibernate : Why FetchType. LAZY-annotated 集合属性急切加载?

java - 最初和已经获得先前连接后重新连接到 JMS 服务器

java - 使用 HttpClient 写入正文请求

java - 如何向 Feign RequestInterceptor 传递参数?

java - 使用 EclipseLink 在 JPA 2.1 中注册转换器

database - ElasticSearch-唯一约束的解决方法

java - 使用 Hibernate 根据唯一键查找或插入

java - 如何正确处理 EntityExistsException?