Hi,
Ich habe hier ein kleines Problem mit meinem Entity-Manager und hoffe mir kann hier jemand helfen.
Wenn ich zu meiner Collection ein paar Einträge hinzufüge/entferne so wird die Datenbank nicht geupdated.
Und die Manager Klasse:
Der Transaction-Commit liefert mir dann folgenden Fehler:
Exception in thread "Thread-2" org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [main.java.controller.entities.SubprogramConfig#25]
Dazu zu sagen ist noch, dass ich eine Kopie der Entity erzeuge, wenn ich damit arbeite und genau dafür soll das copyProperties gut sein, damit das persistente Objekt von Hibernate die richtigen (neuen) Collection-Daten bekommt.
Kann mir da jemand weiter helfen?
Ich habe hier ein kleines Problem mit meinem Entity-Manager und hoffe mir kann hier jemand helfen.
Wenn ich zu meiner Collection ein paar Einträge hinzufüge/entferne so wird die Datenbank nicht geupdated.
Java:
@Entity
@Table(name = "Subprograms")
public class Subprogram implements IEntity, Serializable {
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "subprogram", fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
private Set<SubprogramConfig> subprogramConfig = new HashSet<SubprogramConfig>();
public Subprogram() {
}
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Set<SubprogramConfig> getSubprogramConfigSet() {
return subprogramConfig;
}
public void setSubprogramConfigSet(Set<SubprogramConfig> SubprogramConfig) {
this.subprogramConfig = subprogramConfig;
}
}
Java:
@Entity
@Table(name = "Subprogram_config")
public class SubprogramConfig implements IEntity, Serializable {
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@ManyToOne
@JoinColumn(name = "fk_subprogram")
private Subprogram subprogram;
public SubprogramConfig() {
}
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Subprogram getSubprogram() {
return subprogram;
}
public void setSubprogram(subprogram subprogram) {
this.subprogram = subprogram;
}
}
Java:
public static List<IEntity> executeUpdate(List<IEntity> entityList) {
session.beginTransaction();
entityList.forEach(entity -> {
Object persistentObj = session.load(entity.getClass(), entity.getId());
try {
BeanUtils.copyProperties(persistentObj, entity);
} catch (Exception e) {
e.printStackTrace();
}
session.save(persistentObj);
});
session.getTransaction().commit();
return entityList;
}
Exception in thread "Thread-2" org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [main.java.controller.entities.SubprogramConfig#25]
Dazu zu sagen ist noch, dass ich eine Kopie der Entity erzeuge, wenn ich damit arbeite und genau dafür soll das copyProperties gut sein, damit das persistente Objekt von Hibernate die richtigen (neuen) Collection-Daten bekommt.
Kann mir da jemand weiter helfen?
Zuletzt bearbeitet: