Я работаю над веб-приложением Grails
Приложение работает в очень медленной сети, и к нему обращаются старые и медленные клиентские ПК с IE 6. Соединение с базой данных очень медленное, и база данных перегружена. Поэтому минимизация вызовов БД и данных, передаваемых туда и обратно, является приоритетом
Я знаю, что использование области видимости не является наилучшей практикой. В этом случае я думал, что это будет лучше. Принимая во внимание, что все мои страницы требуют одинакового набора объектов, и это приведет к многократному извлечению их за
Итак, я поместил свой объект в область действия сеанса session.obj = obj
Отлично работает с одной проблемой
Поскольку система работает очень медленно, возможно несколько кликов по ссылке на веб-страницу (контроллер / действие).
Когда это происходит, я получаю сообщение об ошибке в некоторых случаях
org.hibernate.HibernateException: недопустимая попытка связать коллекцию с двумя открытыми сеансами
ошибка происходит с этим кодом
if (!obj?.isAttached()) {
obj?.attach()
}
мне нужно прикрепить объект обратно в сеанс гибернации, чтобы я мог лениво загружать связанные объекты
я не хочу стремиться получить (вероятно, решение)
Мне кажется, что ошибка является причиной, когда объект присоединяется более одного раза. условие, кажется, не блокирует проблему. Это состояние гонки?
Мне просто хотелось бы узнать, есть ли у кого-нибудь решение этой проблемы или узнать причину
спасибо