2013-07-12 4 views
1

최대 절전 모드에 매우 큰 문제가 있습니다.최대 절전 모드 상속 .ABLE_PER_CLASS 전략

내 상속 전략은 glassfish 및 jboss 응용 프로그램 서버 아래에서 eclipselink 아래 jpa 공급자로 완벽하게 작동하지만 최대 절전 모드로 전환하면 모든 것이 어울립니다.

여기 여러 게시물을 읽었지만 아무도 내 문제를 해결하지 못했습니다.

다음은 스택 추적입니다.

Failed to start service 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21] 
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21] 
Caused by: java.lang.ClassCastException: org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass 
    at org.hibernate.cfg.annotations.PropertyBinder.bind(PropertyBinder.java:210) 
    at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:201) 
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2011) 
    at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:765) 
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:684) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3406) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3360) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1334) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    ... 3 more 

내가 어떤 서브 클래스가 다른 @Id 열을 정의 없는지 확인 만든 (어떤 경우에는, 넷빈즈 것입니다 나를 위해 항상 깃발이 오류)이 상속 한 세트가

이다 내가 가지고

@Entity 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
@PartialSecurity 
public abstract class DataVerification extends SecureEntity implements Serializable { 

    private static final long serialVersionUID = IdGenerator.serialVersionUID(DataVerification.class); 
    @Id 
    private Long verificationId = IdGenerator.generateId(); 
    @Column(length = 50, nullable = false) 
    private String verificationCode; 
    private String verifiedId; 
    private boolean verified; 
    @Temporal(javax.persistence.TemporalType.TIMESTAMP) 
    private Calendar verificationDate; 
    private DataVerificationType dataVerificationType; 
    private VerificationMethod verificationMethod; 
    @OneToOne 
    private Account verifiedBy; 
    @OneToOne 
    private Account approvedBy; 


/** 
* 
* @author marembo 
*/ 
@Entity 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class OnlineDataVerification extends DataVerification implements Serializable { 
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    @Ignore 
    private List<UploadFile> verificationFiles; 


    /** 
    * 
    * @author marembo 
    */ 
    @Entity 
    public class IncomeDataVerification extends OnlineDataVerification implements Serializable { 

     private static final long serialVersionUID = IdGenerator.serialVersionUID(IncomeDataVerification.class); 
     private IncomeSource incomeSource; 
     private String occupation; 


/** 
* 
* @author marembo 
*/ 
@Entity 
public class AgentDataVerification extends OnlineDataVerification implements Serializable { 

    @Column(length = 2048, nullable = false) 
    private String comment; 
    private String verificationTransaction = IdGenerator.generateStringId(); 

감사합니다.

+0

을 사용하면 기본 클래스와 서브 클래스를 보낼 수 있을까요? –

+0

나는 거대한 프로젝트로 일하고 있기 때문에 나는 여러 가지 유산을 가지고있다. 그러나 그들 중 몇 가지를 게시하고있다. – maress

+0

이 예외는 대개 중복으로 인해 발생하지만, 당신은 없다고 말했다. –

답변

0

스택 추적으로 인해 최대 절전 모드 불일치 문제가 의심됩니다. 앱을 JBoss에 배포하면 JBoss에는 이미 자체 절전 모드가 있습니다. 만약 당신의 전쟁이 다른 버전의 Hibernate와 함께왔다면 클래스 패스에로드 된 실제 클래스가 모순되어 모든 종류의 문제를 일으킬 수있다. 이미 최대 절전 모드가 전쟁 내부를 번들하지 않습니다 제공 컨테이너에 배포하는 경우

일반적으로 가장 좋은 방법은 (예 : 받는다는 치어에 규정 된 표시 의존성)

+0

나는 컴파일 타임에 그것을 필요로하지 않기 때문에 종속성으로서 최대 절전 모드를 가지고 있지 않다. – maress

관련 문제