Вам нужно закрыть l oop. Если A является другом B, это означает, что B также является другом A, поэтому он будет пытаться найти друзей, пока не выбросит переполнение стека. Измените тип выборки с EAGER на LAZY.
Я не знаю, как вы управляете Hibernate Session в Struts (пожалуйста, включите некоторый код и конфигурацию), но в конечном итоге вся работа, которую вы должны выполнить, должна выполняться в течение сеанса. , Независимо от структуры, вот как она обычно работает:
Вы начинаете с транзакции. По умолчанию контекстом вашего сеансового контекста Hibernate является Транзакция, что означает, что сеанс закрывается, когда транзакция фиксируется. (Вы можете изменить это. См. Контекстный сеанс ). Если вы не запускаете транзакцию явно, то Hibernate создаст ее для вас.
Если вы выполняете всю свою работу во время сеанса откройте, тогда вы не столкнетесь с какими-либо исключениями для отложенной инициализации. Я думаю, в вашем случае ваше решение состоит в том, чтобы начать собственную транзакцию, выполнить работу, а затем зафиксировать транзакцию.