[英]JPA - use class as an entity and embeddable at once?
I'm JPA newbie and I have probably stupid question ;) 我是JPA新手,我可能有个愚蠢的问题;)
Let Node
be a class representing some blog post. 令Node
为代表某些博客文章的类。
@Entity
@Table(name="nodes")
public class Node {
@Id
@GeneratedValue
private long id;
private String title;
private String body;
}
I want to make an archive of deleted nodes in separate table (I don't want to mess nodes
table with removed nodes using deleted
flag). 我想在单独的表中创建已删除节点的存档(我不想使用deleted
标志将deleted
nodes
表弄乱)。 Archive entry should have additional fields: DateTime deletedAt
, String deletedBy
and maybe something else. 存档条目应具有其他字段: DateTime deletedAt
, String deletedBy
和其他内容。
Is there any possibility to make a class ArchivedNode
in the following way: 是否可以通过以下方式创建类ArchivedNode
:
@Table(name="archived_nodes")
@Entity
public class ArchivedNode {
private DateTime deletedAt;
private String deletedBy;
// ...
@Embedded
private Node node;
}
? ? Or maybe there is a better solution for archiving entities in separate tables? 也许有一个更好的解决方案,可以在单独的表中归档实体?
Create a JPA repository for ArchivedNode
. 为ArchivedNode
创建一个JPA存储库。 Each time you wish to call the delete()
method on a Node
, convert the Node
you wish to delete into an ArchivedNode
and save the ArchivedNode
into the archived_nodes table. 每次你想调用delete()
上的一个方法Node
,转换Node
要删除到ArchivedNode
和保存ArchivedNode
到archived_nodes表。
Also, the Node
within ArchivedNode
should be a @OneToOne
unidirectional relationship. 同样, ArchivedNode
的Node
应该是@OneToOne
单向关系。
...
@OneToOne
@JoinColumn(name="id")
private Node node;
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.