У меня есть транзакция, в которой используется один менеджер сущностей em1
. Внутри этой транзакции я вызываю метод. Теперь этот метод создает еще один entitymanager em2
. Теперь em2
оперирует некоторыми данными и возвращает один объект. Теперь этот объект заполняется значением одной строки из db. Обратите внимание, что em2
не закрыт. Somone еще реализовал этот API, и я просто использую его.
Теперь, если я пытаюсь удалить запись, возвращаемую em1
, мой код зависает, а затем время ожидания. Это потому, что em1 заблокировал эту конкретную запись?
псевдокод выглядит следующим образом
start tx using em1
Obj a = newSomeobject().getdata(id); //get data uses em2 and em2 is not closed.
// now tx ties to update record returnd by getdata and the code times out