저는 JPA 초보자이고 어쩌면 어리석은 질문이 있습니다.)JPA - 클래스를 엔터티로 사용하고 한 번에 임베드 할 수 있습니까?
블로그 게시물을 대표하는 클래스가되도록하자.
@Entity
@Table(name="nodes")
public class Node {
@Id
@GeneratedValue
private long id;
private String title;
private String body;
}
내가 별도의 테이블에서 삭제 된 노드의 아카이브를 만들고 싶어 (I는 엉망 deleted
플래그를 사용하여 제거 된 노드 nodes
테이블을 원하지 않는다). 보관 항목에는 추가 입력란 인 DateTime deletedAt
, String deletedBy
등이 있어야합니다.
@Table(name="archived_nodes")
@Entity
public class ArchivedNode {
private DateTime deletedAt;
private String deletedBy;
// ...
@Embedded
private Node node;
}
:
다음과 같은 방법으로 클래스 ArchivedNode
을 할 가능성이 있습니까? 아니면 엔티티를 별도의 테이블에 보관하는 것이 더 나은 솔루션일까요?
개체가 엔터티 인 경우 "id"가 있고 포함 된 개체가 없으므로 직접 적용 할 수 없습니다. 예를 들어 노드의 모든 필드를 제공하는 Embeddable을 가진 Node를 가질 수 있으며 Embeddable 객체도 ArchivedNode에 저장하게 할 수 있습니다. –
Eclipselink는 소프트 삭제 및 기록 테이블을 지원합니다. https://wiki.eclipse.org/EclipseLink/Examples/JPA/SoftDelete https://wiki.eclipse.org/EclipseLink/Examples/JPA/History 다른 제공자는 비슷한 것을 가져야합니다 – Chris