Как заполнить JTable, используя Hibernate? - PullRequest
0 голосов
/ 04 января 2019

Я создаю простое приложение, используя Swing и Hibernate.Я хочу заполнить список JTable, возвращаемый HQL-запросом в Hibernate.Пожалуйста, скажите мне, где я делаю неправильно.

List<Employee> employee= (List<Employee>)sess.createQuery("from Employee where ID<10").list();
String[] rows= {"Book Tile","Author","Price"};
for(Employee e:employee) {
    String[][] cols= {{e.getFirstName(),e.getLastName(),Double.toString(e.getSalary())},};
    DefaultTableModel dtm = new DefaultTableModel(cols,rows);
    table.setModel(dtm);
}

Я ожидал найти таблицу, содержащую все строки, возвращенные HQL, но вместо этого я нахожу только последнюю строку каждый раз, когда запускаю свое приложение

Ответы [ 2 ]

0 голосов
/ 04 января 2019

но вместо этого я нахожу только последнюю строку каждый раз, когда запускаю свое приложение

Это потому, что вы продолжаете создавать новую TableModel каждый раз, когда выполняете цикл for.

Что вам нужно сделать:

  1. создать пустую модель таблицы вне цикла
  2. в цикле вы добавляете новые строки данных в модель.
  3. когда цикл заканчивается, вы создаете таблицу с вашей моделью.

Таким образом, логика будет выглядеть примерно так:

DefaultTableModel dtm = new DefaultTableModel(cols, 0);

for(Employee e:employee) 
{
    String[] row= {e.getFirstName(), e.getLastName(), Double.toString(e.getSalary())};
    dtm.addRow( row );
}

table.setModel(dtm);
0 голосов
/ 04 января 2019

На каждой итерации вы заменяете экземпляр модели данных другим на текущий объект.Вместо этого вы должны объявить массив с размером списка, после заполнения его списком resukls и Last, за исключением for, создать модель данных и присвоить ее jtable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...