В зависимости от уровня изоляции по умолчанию, поиск и блокировка могут оставить вас открытыми для проблем согласованности. Кроме того, код, который вы разместили, вероятно, превратится в два обхода базы данных вместо одного. Было бы предпочтительнее сделать:
em.find(Account.class, 123, PESSIMISTIC);
Или, если вы используете JPA 1:
Account acc = em.getReference(Account.class, 123);
em.lock(acc, PESSIMISTIC);
(Это не ответ на вопрос как таковой, а скорее комментарий о коде OP. К сожалению, комментарии переполнения стека, похоже, не поддерживают форматирование.)