Details
Description
On line 1700 of UnitOfWork#lock column names are used instead of field names, I think the line should read:
array_combine($class->getIdentifierFieldNames(), $this->entityIdentifiers[$oid]),
A related question: when I load an instance by relation, e.g. $author = $book->getAuthor(), I cannot specify a lock type at that point, so I have to call $em->lock($author, LockType::PESSIMISTIC_WRITE) afterwards, which results in two database queries for the same record. Is it possible to do this at once, without setting a transaction isolation level?
Issue Links
- is referenced by
-
DDC-683
EntityManager#lock() on unitialized proxy coudl be optimized
-
Fixed the UoW issue. Thanks!
As for the second issue, there is really only one way to skip the second database call:
Use a Fetch Join DQL to get both book and author and apply the pessimistic lock to that DQL. (Locking both the book and author)
All the other way already created the Author proxy object and you won't be able to specify a locking hint on those lazy loading select statements, requiring you to do the second locking call.