Problemet är hur du hämtar data i getStuff() . Varje gång du besöker getStuff() du får ett nytt ResultSet men du stänger den inte.
Detta bryter mot förväntningarna på Statement klass (se här - https://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
Som standard kan endast ett ResultSet-objekt per Statement-objekt vara öppet samtidigt. Därför, om läsningen av ett ResultSet-objekt interfolieras med läsningen av ett annat, måste var och en ha genererats av olika Statement-objekt. Alla exekveringsmetoder i Statement-gränssnittet stänger implicit ett utdrags aktuella ResultSet-objekt om det finns ett öppet sådant.
Det som gör saken ännu värre är rs från samtalskoden. Det härleds också från statement fältet men det är inte stängt.
Summa summarum:du har flera ResultSet som hänför sig till samma Statement objektet öppnas samtidigt.