Erstmal ein herzliches Hallo an das Forum.
Nun muss ich doch mal eine Frage stellen wo ich selbst nicht mehr weiter komme und Hilfe brauche. Folgende Ausgangssituation liegt vor:
- Datenbank + Hibernate Mapping
- eigenes TableModel welches Daten aus der DB verwaltet
- zwei JTables
- Listener welche per Tastendruck Werte der Tabelle ändert
Folgendes Szenario ist gegeben:
DB wird ausgelesen und das TableModel wird gefüllt. Dabei werden die Werte aus dem DB Entity gelesen und das Entity selbst in einer Spalte gespeichert um später schneller Zugriff zu haben. Das ganze sieht dann verkürzt so aus:
TableRow row1 = new TableRow(entity, entity.getName(), entity.getFlags())
tableModel1.add(row)
TableRow row2 = new TableRow(entity, entity.getName(), entity.getFlags(), entity.isActive())
tableModel2.add(row)
Das das doppelt ist, ist nicht gerade schön, aber so hat es funktioniert. Das das unnötig ist, sei hier mal außen vor.
Das Flag Feld beinhaltet eine Liste von möglichen Flags, welche in einer anderen Tabelle stehen.
Nun reagiert eine Tabelle auf einen Tastendruck und ein Flag, der selektieren Zeile, soll entfernt werden
entity = tableModel1.getValueAt(row, TableModel.Entity)
entity.removeFlag(flag);
tableModel1.setValue(row, entity.getFlags())
Problem an der Sache:
Auch in der zweiten Tabelle wird die entsprechende Spalte geändert, sprich das Flag wurde gelöscht.
Frage
Wieso
Erst hätte ich gedacht, das das damit zusammenhängt das im Grunde die Referenz bei beiden Tabellen auf die gleiche Liste von Flags zeigt. Aber da das ganze nur bei der Liste, und nicht z.B. beim Namen geschieht, bin ich etwas ratlos wo genau da der (Denk-)Fehler liegt.
Falls mehr Infos benötigt werden, bzw irgendwas unklar ist kann ich das natürlich versuchen nochmal genauer zu beschreiben