我是JPA新手,我可能有愚蠢的问题;)
让Node
成为代表某篇博客帖子的类。
@Entity
@Table(name="nodes")
public class Node {
@Id
@GeneratedValue
private long id;
private String title;
private String body;
}
我想在单独的表中存档已删除的节点(我不想使用nodes
标志将deleted
表与已删除的节点混淆。存档条目应包含其他字段:DateTime deletedAt
,String deletedBy
以及其他可能的内容。
是否有可能以下列方式制作课程ArchivedNode
:
@Table(name="archived_nodes")
@Entity
public class ArchivedNode {
private DateTime deletedAt;
private String deletedBy;
// ...
@Embedded
private Node node;
}
?或者可能有更好的解决方案在单独的表中归档实体?
答案 0 :(得分:0)
为ArchivedNode
创建JPA存储库。每次您希望在delete()
上调用Node
方法时,请将您要删除的Node
转换为ArchivedNode
,并将ArchivedNode
保存到archived_nodes中表。
此外,Node
中的ArchivedNode
应该是@OneToOne
单向关系。
...
@OneToOne
@JoinColumn(name="id")
private Node node;
...