Hallo zusammen,
ich bin mal wieder auf ein Problem gestoßen, womit ich gar nicht klar kommen. Ich habe ein BackupPoint Model der sozusagen zwei Verzeichnise als String abspeichert und letztes Document, Registration und Appointment.
Beim Erstellen des BackupPoint Object setze ich ein in der DB existierendes Document, Registration und Appointment Object mit. Und beim Speichern des BackupPoint Objects bekomme ich folgende Meldung:
Was hat das zu bedeuten?
An sich sollen die referenzierten Objekte nicht mehr gespeichert werden, d.h. CascadeType Merge und Refresh reicht in dem Sinne oder?
Es sollen jeweils nur die Ids der Objekte in das BackupPoint gespeichert werden, d.h. wenn ich ganz dumme mache könnte ich es auch so ohne Referenzierung machen
Aber das ist auch nicht wirklich das wahre. Was ist da mein Denkfehler und wie kann man es schöner machen?
Vielen Dank schonmal.
Grüße
lam
ich bin mal wieder auf ein Problem gestoßen, womit ich gar nicht klar kommen. Ich habe ein BackupPoint Model der sozusagen zwei Verzeichnise als String abspeichert und letztes Document, Registration und Appointment.
Code:
@Entity
public class BackupPoint {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "BACKUP_POINT_ID", nullable = false, columnDefinition = "BIGINT")
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String sourcePath;
@Column(nullable = false)
private String targetPath;
@OneToOne(fetch = FetchType.LAZY, cascade={CascadeType.MERGE,CascadeType.REFRESH})
@MapsId
private Document document;
@OneToOne(fetch = FetchType.LAZY, cascade={CascadeType.MERGE,CascadeType.REFRESH})
@MapsId
private Registration registration;
@OneToOne(fetch = FetchType.LAZY, cascade={CascadeType.MERGE,CascadeType.REFRESH})
@MapsId
private Appointment appointment;
}
Beim Erstellen des BackupPoint Object setze ich ein in der DB existierendes Document, Registration und Appointment Object mit. Und beim Speichern des BackupPoint Objects bekomme ich folgende Meldung:
Code:
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: de.dc.fx.model.calendar.Appointment; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: de.dc.fx.model.calendar.Appointment
Was hat das zu bedeuten?
An sich sollen die referenzierten Objekte nicht mehr gespeichert werden, d.h. CascadeType Merge und Refresh reicht in dem Sinne oder?
Es sollen jeweils nur die Ids der Objekte in das BackupPoint gespeichert werden, d.h. wenn ich ganz dumme mache könnte ich es auch so ohne Referenzierung machen
Code:
@Entity
public class BackupPoint {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "BACKUP_POINT_ID", nullable = false, columnDefinition = "BIGINT")
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String sourcePath;
@Column(nullable = false)
private String targetPath;
@Column(nullable = false)
private int documentId;
@Column(nullable = false)
private int RegistrationId;
@Column(nullable = false)
private int appointmentId;
}
Aber das ist auch nicht wirklich das wahre. Was ist da mein Denkfehler und wie kann man es schöner machen?
Vielen Dank schonmal.
Grüße
lam