来自javadoc,它说: 找到(Class entityClass, 对象primaryKey) 按主键查找。 参数: entityClass - 首要的关键 - 返回: 找到的实体实例,如果实体不存在,则返回null
当它无法获取记录的锁定时,它是否也返回null?
在我的程序中,当它无法获取对所涉及的行的锁定时,似乎返回null。
答案 0 :(得分:0)
当EntityManager.find()
无法锁定某行时,它会抛出异常。这是我的一个日志来证明它。在我的情况下,它试图读取已经锁定的记录并在20秒后失败(OpenJPA 1.2.2 + Derby 10.6):
2011-10-14T16:33:22.882 [RemoteParameterStatusListenerInternalContainer-2] ERROR [c.v.r.r.i.g.RemoteParameterStatusInternalGatewayBean] - Exception in [...] org.apache.openjpa.persistence.OptimisticLockException: Unable to obtain an object lock on "DERBY SQL error: SQLCODE: -1, SQLSTATE: 40001, SQLERRMC: Lock : ROW, PRODUCTSTATUS, (389,56)
Waiting XID : {225252, S} [...], [query here]
Granted XID : {225234, X}
Lock : ROW, PRODUCTSTATUS, (389,57)
Waiting XID : {225234, S} [...]