Я пытаюсь передать много данных из MySQL с Hibernate через .getResultStream()
, и я получаю OutOfMemoryErrors.
При первой загрузке строки через некоторое время я получу это исключение, где я вижу:
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1963) ~[mysql-connector-java-5.1.37.jar:5.1.37]
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3308) ~[mysql-connector-java-5.1.37.jar:5.1.37]
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:463) ~[mysql-connector-java-5.1.37.jar:5.1.37]
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3032) ~[mysql-connector-java-5.1.37.jar:5.1.37]
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2280) ~[mysql-connector-java-5.1.37.jar:5.1.37]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673) ~[mysql-connector-java-5.1.37.jar:5.1.37]
, что меня удивляет, так это readAllResults
- кажется, это не реальная потоковая передача.
Я также пытался использовать:
query.setHint("org.hibernate.fetchSize", 1000)
Без эффекта.
Затем я обновился до MySQL Connector 8.0.19 и Hibernate 5.4. 11. Финал с тем же эффектом.