Из вашего вопроса не ясно, имеет ли запись EM2 какое-либо отношение к таблицам, включенным в EM1. Если так, то это может быть потому, что EM2 не был закрыт. Обратите внимание, что даже события «select» включают транзакции. Итак, я бы сказал, что первым делом было бы добавить явное разграничение транзакций в EM2. Неявные транзакции на самом деле не очень хорошая вещь, и в зависимости от используемой вами базы данных и уровней изоляции базовая база данных может ожидать завершения неявной транзакции EM2, вызывая мертвую блокировку в вашем коде.
Мое предложение:
Object getData(){
create em2
tx2.start
get record
tx2.commit
close em2
return record
}
В качестве хорошей практики старайтесь всегда явно начинать и совершать транзакции, даже в целях чтения. Помните, что даже если вы не укажете транзакцию, ваша база данных будет запускаться неявно.