Как читать данные порциями в Vaadin для экспорта в PDFJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как читать данные порциями в Vaadin для экспорта в PDF

Сообщение Anonymous »


У меня 2 миллиарда записей в MySQL.

Я использую Vaadin Framework с отложенной загрузкой (https://vaadin.com/docs/v23/comComponen ... zy-loading) и фильтром (с обратным вызовом):

private void showData(Фильтр фильтра) { PositionGrid.setItems(запрос -> { вар vaadinSortOrders = query.getSortOrders(); вар SpringSortOrders = новый ArrayList(); for (QuerySortOrder так: vaadinSortOrders) { Строка colKey = so.getSorted(); if (so.getDirection() == SortDirection.ASCENDING) { SpringSortOrders.add(Sort.Order.asc(colKey)); } else if (so.getDirection() == SortDirection.DESCENDING) { SpringSortOrders.add(Sort.Order.desc(colKey)); } } вернуть позициюService.getAll( фильтр, PageRequest.of(query.getPage(), запрос.getPageSize(), Sort.by(springSortOrders)) ).транслировать(); }); } Мне нужно экспортировать данные в отчет в формате PDF (я использую библиотеку itextpdf). Но я получаю ошибку:

java.lang.OutOfMemoryError: пространство кучи Java

Мой код:

private Final PositionGrid PositionGrid; ...

positionGrid.getLazyDataView().getItems().forEach(elem -> { table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(новый абзац(String.valueOf(num.incrementAndGet())).setTextAlignment(TextAlignment.CENTER))); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph(elem.getSsi().toString())).setTextAlignment(TextAlignment.CENTER)); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(новый параграф(PositionGrid.formatter.format(elem.getDatetime())).setTextAlignment(TextAlignment.CENTER))); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph(elem.getPosx().toString())).setTextAlignment(TextAlignment.CENTER)); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph(elem.getPosy().toString())).setTextAlignment(TextAlignment.CENTER)); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(новый абзац((elem.getVelocity() != null) ? elem.getVelocity().toString() : "")).setTextAlignment(TextAlignment .ЦЕНТР)); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph((elem.getRssi() != null) ? elem.getRssi().toString() : "")).setTextAlignment(TextAlignment .ЦЕНТР)); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(new Paragraph((elem.getPathDelay() != null) ? elem.getPathDelay().toString() : "")).setTextAlignment(TextAlignment .ЦЕНТР)); table.addCell(new Cell().setTextAlignment(TextAlignment.CENTER).add(новый абзац((elem.getBsId() != null) ? elem.getBsId().toString() : "")).setTextAlignment(TextAlignment .ЦЕНТР)); }); Расскажите, пожалуйста. Как мне прочитать данные по частям (мне нужно записать их в PDF-файл)?

Это моя сущность:
@Entity @Table(name = "Позиции") @Getter @Сеттер позиция публичного класса { @Идентификатор @GeneratedValue(стратегия = GenerationType.IDENTITY) @Column(name = "id", nullable = false) частный длинный идентификатор; @Column(name = «datetime», nullable = false) частный Мгновенный datetime; @Column(name = "posx", nullable = false) частный двухместный номер; @Column(name = "posi", nullable = false) частный двухместный букет; @Column(name = "скорость") частная двойная скорость; @Column(name = "rssi") частный короткий rssi; @Column(name = "pathDelay") частный Short pathDelay; @Column(name = "bs_id") частный целочисленный bsId; @Column(name = "ssi", nullable = false) частный длинный ssi; }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»