2014-05-09 3 views
0

동일한 필드가있는 두 개의 JPA 엔티티가 있는데 서로 다른 테이블에 저장하려고합니다. 그래서 코드를 두 배로 늘리지 않기 위해 추상 공통 맵핑 된 기본 클래스를 기반으로했습니다. 이제이 테이블 중 하나를 감사하고 다른 하나는 감사하지 않기를 바란다. 그러나 하나의 클래스를 감사하도록 설정하면 Envers는 파생 클래스 모두에 대해 _AUD 테이블을 만듭니다. 다른 파생 클래스를 감사 모드 NotAudited로 설정하더라도 해당 감사 테이블이 만들어집니다. 설명한대로 구성 할 수 있습니까?Envers는 맵핑 된 기본 클래스가있는 서로 다른 구체적인 파생 클래스에 대해 서로 다른 감사 모드를 가질 수 있습니까?

내 (간체) 클래스 :

@MappedBaseClass 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
public abstract class AbstractPrice { 
    // some fields and some methods 
} 

@Entity 
@Audited(targetAuditMode=RelationTargetAuditMode.AUDITED) 
public class Price extends AbstractPrice { 
} 

@Entity 
@Audited(targetAuditMode=RelationTargetAuditMode.NOT_AUDITED) 
public class OriginalPrice extends AbstractPrice { 
} 
+1

'AbstractPrice'는'MappedSuperClass '가되어야하는 개체가 아닙니다. –

+0

감사합니다. 나는 그것을 바로 잡았다. 하지만 문제의 일부는 다음과 같이 계속됩니다. 파생 클래스 중 하나를 Audited로 설정하면 다른 클래스도 감사를받습니다. –

+1

'targetAuditMode'는 관계가있는 필드에만 사용해야합니다. 엔티티 감사를 원하지 않으면 단순히 주석을 제거하십시오. Annotation이 하나뿐일 때'Price'와'OriginalPrice'에 대한 감사 테이블을 가지고 있습니까? 어떤 버전의 Hibernate를 사용하고 있습니까? – adamw

답변

0

targetAuditMode 만 관계있는 분야에 사용되어야한다. 엔티티 감사를 원하지 않으면 단순히 주석을 제거하십시오.