다음과 같은 설정이 있습니다. 다양한 엔티티 (Projects
, Tests
, Users
)가 있고 TestReports
이 있습니다. TestReports
은 다른 엔터티를 참조하고 파일 시스템의 일부 추가 데이터를 참조합니다.JPA/Hibernate에서 삭제 된 엔티티를 참조하십시오.
보고서가 생성되어 삭제되지 않습니다 (감사 목적). 그러나 다른 엔티티는 삭제할 수 있습니다. 이는 보고서가 일부 삭제 된 항목을 참조 할 때 상황을 초래합니다. 이것은 비즈니스 관점에서 보면 괜찮습니다. 보고서는 삭제 된 엔티티 레이블 대신 [deleted id123]
을 표시 할 수 있으며 괜찮을 것입니다. 그러나 삭제 된 엔터티를 참조하는 보고서를로드하려고하면 javax.persistence.EntityNotFoundException
이 표시됩니다.
ID가있는 팬텀 오브젝트를 생성하기 위해 Hibernate/JPA에 알려주는 방법이 있습니까?이 경우에는 isDeleted
플래그가 필요합니까?
Hibernate Envers 문서에서 수정 내역을 트래버스 할 때 이와 비슷한 것을 지원하지만 '정상'엔티티에서 사용할 방법을 찾지 못했습니다. Envers 문서에서
: 엔티티가 결실 된 버전이 결과에 포함되어야 하는지를
번째 파라미터는 selectDeletedEntities 지정. 예인 경우 엔 해당 엔티티의 수정 유형이 DEL이고 ID를 제외한 모든 필드는 null입니다.
나는 모든 객체에 deleted
플래그를 도입하여 해결 방법을 알고 그리고 만약 소프트 삭제하는 대신 실제 제거의 사용합니다. 그러나 이로 인해 추가 오버 헤드가 추가되는 것을 피할 수 있습니다.
감사합니다. 이것은 거의 내가 원하는 것처럼 보입니다. 실제 no reference와 무시한 것을 무시하는 표준 방법이 있는지 알고 있습니까? – Michal
나는 모르지만 나는 최대 절전 모드가 그런 시설을 제공한다고 생각하지 않는다 : S. – Augusto