Wpis z mikrobloga

Mam widok SQL zmapowany jako tabela w hibernate, który wyświetlam w formie tabeli. Muszę zmienić wartość jednego z pól. Hibernate akurat w tym wypadku nie pozwala mi zrobić update'u bezpośrednio na widoku. Jak najprościej mogę zachować spójność danych? Czy powinienem po wykonaniu update pobrać znowu wartość danego widoku z bazy? Samo założenie, że update się wykonał raczej jest niewystarczające.

#programowanie #java #mysql #sql #hibernate #spring
  • 4
@Ghostli: Raczej jak w widoku łączysz kilka tabel to musisz w widoku wyświetlać do nich klucze i po kluczu wczytać wartość odpowiednio w tej tabeli i na niej wykonać update. Sam ostatnio tak robiłem, nic lepszego nie znam :)
@Ghostli: Mówiąc prościej. Masz widok łączący tabele A, B i C. Chcesz zupdatować tabele B. Dajesz do widoku klucz po którym będziesz mógł rozpoznać tabele B. Wykonujesz update na tabeli B dla klucza którego znalazłeś w widoku (wczytujesz dane, updatujesz, zapisujesz w hibernate). Po wyświetleniu widoku będziesz miał uzupełnione dane :)
@eovenn: @Ununoctium: Chociażby dlatego, że update jest wykonywany jako event handler, a nie mogę w tym miejscu modyfikować pola lokalnego funkcji, w której go rejestruję. Z kolei pobranie całej tabeli od nowa to dla mnie duża strata wydajnościowa. Tak poglądowo:

status.setCellValueFactory(new Callback() {
@Override
public ObservableValue call(TableColumn.CellDataFeatures param) {
ProductView productView = (ProductView) param.getValue();
...
checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
productView.setStatus(newValue);
productViewDAO.updateProductStatus(productView);
// TODO: jakoś synchronizować widok po updacie z