Mam pewien problem.
Otoż robie aplikację z wykorzystanie JPA ( Hibernate ) oraz tableview. Problem wygląda następująco.
Do tableview mam wpisanych 1800 rekordów . Jest również pole textowe gdzie wpisuje słowo klucz po którym następuje wyszukiwanie wszystkich rekordów pasujących do tego słowa i nagle w tej tabeli pojawia się np 3 linijki. Teraz zaznaczam jeden rekord i następnie naciskam przycisk który aktualizuje jakąś wartości w tym rekordzie. Niestety problem polega na tym że nie potrafię odświeżyć tego posortowanego wyniku tak aby pojawiła się ta aktualizacja. Zamiast tego odświeżam całe zapytanie i ładuje dane jeszcze raz do tabeli co jest zdeczka niewygodne w użyciu. Prosiłbym o pomoc w jaki sposób mogę odświeżyć ten posortowany widok.
Tak odświeżam obecnie dane:
EntityManagerFactory EntityManagerFactory = Persistence
.createEntityManagerFactory("wyboryDB");
EntityManager entityManager = EntityManagerFactory
.createEntityManager();
TypedQuery<Wyborca> query = entityManager.createQuery(
"select w from Wyborca w", Wyborca.class);
data = FXCollections.<Wyborca> observableArrayList(query
.getResultList());
entityManager.clear();
EntityManagerFactory.close();
filteredData.clear();
filteredData.addAll(data);
tbView.setItems(filteredData);
Czyli jeszcze raz ładuje wszystko do bazy.
A w ten sposób obsługuję przycisk aktualizujący wpis ( dodaje datę)
void addData(ActionEvent event) {
EntityManagerFactory EntityManagerFactory = Persistence
.createEntityManagerFactory("wyboryDB");
EntityManager entityManager = EntityManagerFactory
.createEntityManager();
Date date = new Date();
Wyborca selectedWyborca = tbView.getSelectionModel().getSelectedItem();
if (selectedWyborca != null) {
entityManager.getTransaction().begin();
Wyborca newWyborca = entityManager.find(Wyborca.class,selectedWyborca.getId());
newWyborca.setData_glosowania(new Timestamp(date.getTime()));
entityManager.getTransaction().commit();
} else {
System.out.println("Nie wybrano wiersza");
}
entityManager.clear();
EntityManagerFactory.close();
refreshTable();
}
Czy muszę podczas dodawania daty zaktualizować ten rekord i w bazie i widoku ?
Pozdrawiam