У меня есть куча исключений, связанных с сессиями, таких как:
org.hibernate.LazyInitializationException failed to lazily initialize a collection of role: <...>, no session or session was closed
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session
org.hibernate.TransientObjectException: cannot lock an unsaved transient instance: <...>
org.hibernate.UnresolvableObjectException: No row with the given identifier exists
Я пытаюсь понять, почему.
Итак, я активировал журналы SQL, и когда я смотрю статистику гибернации, я вижу 80 открытых и 80 закрытых сессий, даже если запрос http не закончен ...
Я думал, что OSIV (который активируется по умолчанию в grails) может предотвратить некоторые вещи с отложенным инициализацией, но, как я вижу, сессии открываются, а затем закрываются по требованию (для транзакций).
Так почему бы мне не открыть хотя бы один сеанс до конца http-запроса?
Есть ли у вас идеи понять / расследовать происходящее?
Большое спасибо
Versions used:
Grails 2.5.6
GORM 3.1.4
Spring 4.1.9
Hibernate3 3.6.10