Hallo Forum,
ich steh noch immer ganz am Anfang im Umgang mit Hibernate.
Nun habe ich folgendes Szenario:
Ich stelle auf dem Client ein Objekt zusammen und schicke es via RMI zum Server, dort soll es gespeichert werden.
Das funktioniert, das Objekt wird gespeichert. Allerdings gibt es eine verknüpfte Liste, diese wird leider nicht entsprechend gespeichert. Es gibt keine Fehlermeldung, es gibt nur keinen Anstoß der Speicherung.
Hierbei handelt es sich um die Klasse User die eine Liste aller Gruppe (Group) enthällt in die der User Mitglied ist.
Client:
Server:
Die Klasse User:
Kann mir jemand sagen welchen Fehler ich mache?
Die Liste ist nicht leer wenn sie auf dem Server ankommt sondern korrekt gefüllt.
Vielen Dank schonmal!
Gruß
Sparrow
ich steh noch immer ganz am Anfang im Umgang mit Hibernate.
Nun habe ich folgendes Szenario:
Ich stelle auf dem Client ein Objekt zusammen und schicke es via RMI zum Server, dort soll es gespeichert werden.
Das funktioniert, das Objekt wird gespeichert. Allerdings gibt es eine verknüpfte Liste, diese wird leider nicht entsprechend gespeichert. Es gibt keine Fehlermeldung, es gibt nur keinen Anstoß der Speicherung.
Hierbei handelt es sich um die Klasse User die eine Liste aller Gruppe (Group) enthällt in die der User Mitglied ist.
Client:
Code:
private void saveButActionPerformed(java.awt.event.ActionEvent evt) {
// A user should been selected
if (userList.getSelectedIndex() > -1) {
try {
// Setting Field-Data
UserListModel umodel = (UserListModel) userList.getModel();
User u = umodel.getUserAt(userList.getSelectedIndex());
u.setUsername(this.usernameField.getText());
u.setFullName(this.fullNameField.getText());
u.setComment(this.commentField.getText());
// Clearing the Groups in the user and setting the new groups from the selected list
u.getGroups().clear();
int[] selectedIndices = groupList.getSelectedIndices();
GroupListModel gml = (GroupListModel) groupList.getModel();
for (int i = 0; i < selectedIndices.length; i++) {
u.getGroups().add(gml.getGroupAt(selectedIndices[i]));
System.out.println("Saving group: " + gml.getGroupAt(selectedIndices[i]));
}
int saved = userManagment.addOrUpdateUser(u);
if (u.getId() == null) {
u.setId(saved);
}
userList.repaint();
} catch (RemoteException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Failed to connect server for saving: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
Server:
Code:
public int addOrUpdateUser(User user) throws RemoteException {
Session session = SESSION_FACTORY.openSession();
Transaction trans = session.beginTransaction();
try {
user.setGroups(user.getGroups());
session.saveOrUpdate(user);
trans.commit();
session.close();
getLogger().info("UserManagmet.addOrUpdateUser saved: " + user.getUsername());
return user.getId();
} catch (Exception e) {
if (trans.isActive()) {
trans.rollback();
}
if (session.isOpen()) {
session.close();
}
getLogger().error("Failed to save User: " + e.getMessage());
return -1;
}
}
Die Klasse User:
Code:
@Entity
public class User implements Serializable {
private List<Group> groups = new ArrayList<Group>();
@ManyToMany(fetch = FetchType.EAGER)
public List<Group> getGroups() {
return groups;
}
public void setGroups(List<Group> groups) {
this.groups.clear();
if (groups != null) {
this.groups.addAll(groups);
}
}
}
Kann mir jemand sagen welchen Fehler ich mache?
Die Liste ist nicht leer wenn sie auf dem Server ankommt sondern korrekt gefüllt.
Vielen Dank schonmal!
Gruß
Sparrow