【发布时间】:2018-03-29 13:26:56
【问题描述】:
我有一个在事务中运行的 java 方法,我使用以下 JPA 查询读取 Oracle 数据库表,然后使用以下查询的结果在同一个表中插入一条新记录。我想了解锁定模式PESSIMISTIC_WRITE 在这种情况下如何工作。当执行以下查询时,整个表是否会被锁定,从而阻止对该表的其他读取,直到我的方法在插入后提交事务?
@NamedQuery(name = "findByMaxSeqForGivenOrd", query = "select ar from Remark ar
where ar.sequenceNumber = (select max(ar1.remarkId.sequenceNumber) from Remark ar1
where ar1.remarkId.orderNum = ar.remarkId.orderNum
AND ar1.remarkId.orderNum=:orderNum)",
lockMode=LockModeType.PESSIMISTIC_WRITE,
hints = @QueryHint( name = "javax.persistence.lock.timeout", value =
"3000"))
【问题讨论】: