JPA - 使用类作为实体并立即嵌入?

时间:2016-08-03 13:40:53

标签: java hibernate jpa spring-data-jpa

我是JPA新手,我可能有愚蠢的问题;)

Node成为代表某篇博客帖子的类。

@Entity
@Table(name="nodes")
public class Node {
    @Id
    @GeneratedValue
    private long id;
    private String title;
    private String body;
}

我想在单独的表中存档已删除的节点(我不想使用nodes标志将deleted表与已删除的节点混淆。存档条目应包含其他字段:DateTime deletedAtString deletedBy以及其他可能的内容。

是否有可能以下列方式制作课程ArchivedNode

@Table(name="archived_nodes")
@Entity
public class ArchivedNode {
    private DateTime deletedAt;
    private String deletedBy;
    // ...
    @Embedded
    private Node node;
}

?或者可能有更好的解决方案在单独的表中归档实体?

1 个答案:

答案 0 :(得分:0)

ArchivedNode创建JPA存储库。每次您希望在delete()上调用Node方法时,请将您要删除的Node转换为ArchivedNode,并将ArchivedNode保存到archived_nodes中表。

此外,Node中的ArchivedNode应该是@OneToOne单向关系。

...
@OneToOne
@JoinColumn(name="id")
private Node node;
...