Vorweg ich benutze EJB, JPA, OpenJPA, WS7 --> dürfte aber alles keine Rolle spielen ausser vllt die "alte" openjpa Version 1.2.3
Die Problemstellung:
Ich habe eine Entität "Objekt" welche verschiedene Status Stadien durchlebt (beantragt, ausgestellt, abgewiesen, genehmigt,..) und selbiges sollte eigentlich wie folgt abgebildet werden:
1 Objekt hat viele Status
1 Status gehört zu einem Objekt
--> Objekt 1:n Status
= somit müsste ich in der Entität Objekt eine Liste von Status anbieten, aus programmatischer Sicht aber nicht schön gelöst (für meine Fall) da ich nämlich so gut wie immer mit dem aktuellen Status arbeiten muss, ist auf Java Ebene nicht unbedingt ein Problem jedoch wenn ich eine named query auf den aktuellen Status prüfen möchte gestaltet sich das schon komplizierter als es eigentlich sein sollte.
Deshalb habe ich folgendes abgebildet:
Entitäten:
Selbiges funktioniert lustigerweise auch sofern ich ein insert mache (sprich Objekt wird das erste Mal persistiert mit dem Status "beantragt"). Wenn ich nun jedoch eine Statusänderung durchführe (bspw. auf "ausgestellt") dann klappt hierbei auch das Update con Objket sowie das Insert in die Tabelle Status jedoch bekomme ich im Result die ID nicht mit (selbige ist bspw. nachdem Insert oder beim Laden des Objekts vorhanden).
Hatte jemand eine ähnliche Sachlage und kann mir sagen wie ich diese Problematik anders (besser) lösen kann oder eine Lösung weiß warum die ID nicht mit zurückgegeben wird?
Die Problemstellung:
Ich habe eine Entität "Objekt" welche verschiedene Status Stadien durchlebt (beantragt, ausgestellt, abgewiesen, genehmigt,..) und selbiges sollte eigentlich wie folgt abgebildet werden:
1 Objekt hat viele Status
1 Status gehört zu einem Objekt
--> Objekt 1:n Status
= somit müsste ich in der Entität Objekt eine Liste von Status anbieten, aus programmatischer Sicht aber nicht schön gelöst (für meine Fall) da ich nämlich so gut wie immer mit dem aktuellen Status arbeiten muss, ist auf Java Ebene nicht unbedingt ein Problem jedoch wenn ich eine named query auf den aktuellen Status prüfen möchte gestaltet sich das schon komplizierter als es eigentlich sein sollte.
Deshalb habe ich folgendes abgebildet:
Entitäten:
Java:
public class Objekt {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH })
@JoinColumn(name = "status", nullable = true)
private Status aktuellerStatus;
..
}
Java:
public class Status {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name = "objekt", nullable = false)
private Objekt objekt;
..
Selbiges funktioniert lustigerweise auch sofern ich ein insert mache (sprich Objekt wird das erste Mal persistiert mit dem Status "beantragt"). Wenn ich nun jedoch eine Statusänderung durchführe (bspw. auf "ausgestellt") dann klappt hierbei auch das Update con Objket sowie das Insert in die Tabelle Status jedoch bekomme ich im Result die ID nicht mit (selbige ist bspw. nachdem Insert oder beim Laden des Objekts vorhanden).
Hatte jemand eine ähnliche Sachlage und kann mir sagen wie ich diese Problematik anders (besser) lösen kann oder eine Lösung weiß warum die ID nicht mit zurückgegeben wird?
Zuletzt bearbeitet: