Ich bin JPA-Neuling und ich habe wahrscheinlich dumme Frage;)JPA - Klasse als Entität verwenden und gleichzeitig einbetten?
Lassen Sie Node
eine Klasse sein, die einige Blogpost darstellt.
@Entity
@Table(name="nodes")
public class Node {
@Id
@GeneratedValue
private long id;
private String title;
private String body;
}
ich ein Archiv von gelöschten Knoten in separater Tabelle machen will (ich will nicht zu verwirren nodes
Tabelle mit entfernten Knoten mit deleted
Flag). Archiveintrag sollte zusätzliche Felder haben: DateTime deletedAt
, String deletedBy
und vielleicht noch etwas anderes.
Gibt es eine Möglichkeit, eine Klasse ArchivedNode
in der folgenden Art und Weise zu machen:
@Table(name="archived_nodes")
@Entity
public class ArchivedNode {
private DateTime deletedAt;
private String deletedBy;
// ...
@Embedded
private Node node;
}
? Oder gibt es eine bessere Lösung für die Archivierung von Entitäten in separaten Tabellen?
Sie können nicht direkt, da, wenn etwas eine Entität ist, dann hat es eine "ID" und ein eingebettetes Objekt nicht. Sie könnten einen Knoten haben, mit einem Embeddable, der zum Beispiel alle Felder des Knotens bereitstellt, und dann dieses einbettbare Objekt auch in ArchivedNode gespeichert haben. –
Eclipselink unterstützt Soft Deletes und Verlaufstabellen https://wiki.eclipse.org/EclipseLink/Examples/JPA/SoftDelete https://wiki.eclipse.org/EclipseLink/Examples/JPA/History Andere Anbieter sollten etwas Ähnliches haben – Chris