【发布时间】:2015-03-04 23:43:36
【问题描述】:
我正在使用带有 jpa 和 hibernate 的 spring 4,我面临以下问题:
我有一个包含以下字段的表格: - 身份证(PK) - 提供者 - 提供者 ID - 状态
此表用于映射来自给定提供商的订单的工作流程。 Provider 和 ProviderId 应该是唯一的 但是我可以在错误状态下对相同的(PRvider,ProviderId)有不同的行,而我必须在任何时候 对于给定的 Provider,ProviderId 状态为 OPEN,最多一行。比如下面是正确的配置:
1,PROV,001,CANCELLED
2,PROV,001,ERROR
3,PROV,001,OPEN
虽然这个无效:
1,PROV1,002,CANCELLED
2,PROV1,002,OPEN
3,PROV1,002,OPEN
我有一个带有 addORder 方法的服务类,该方法检查给定的 Provider,OrderID 是否已经存在状态中的一行 在执行保存之前打开。我如何确定检查(执行选择)和数据库写入是原子执行的? @Transactional 注释应该对我有用吗?我可以添加一个触发器。有更流畅的方法吗? 多谢!
【问题讨论】:
标签: java spring hibernate jpa spring-transactions