Odświeżenie wyfiltorwanego wartosci w tableview.

0

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

0

Chciałem poprawić tytuł ale już nie mogę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1