Eclipselink의 DescriptorCustomizer for History를 사용할 때 ClassCastException이 발생합니다.Eclipselink의 ClassCastException DescriptorCustomizer
처럼 내 카스타 클래스는 같습니다
public class MyCustomizer implements DescriptorCustomizer {
@Override
public void customize(ClassDescriptor classDescriptor) thorws Exception {
// Setting HistoryPolicy here.
}
}
엔티티가 주석을 붙일 수 :
@Customizer(full.packagename.MyCustomizer.class)
이이 같은 구조 된 Maven 프로젝트에서 EJB 모듈로 수행됩니다
- 루트
- 귀
- EJB
- 전쟁
Eclipslink 의존성이다 : 다른 응용 프로그램이없는있는 코드에서는 WebSphere 자유 17.0.0.2에서 실행중인
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.3</version>
<scope>provided</scope>
</dependency>
배치. Eclipselink jar는 서버의 전역 lib 디렉토리에 있습니다.
은 EclipseLink가 먼저 나는 다음과 같은 예외가 발생 엔티티에 액세스하려고 할 때 : 나는 응용 프로그램의 패키지에는 EclipseLink를 포함하려고 노력하지만 결과는 동일MyCustomizer cannot be cast to org.eclipse.persistence.config.DescriptorCustomizer
. 적절한 캐스팅을 방지 할 수있는 방법과 해결 방법은 무엇입니까? 그것은 WebSphere의 내부를 방해 할 수 없습니다 따라서는 javax.persistence 패키지가 포함되어 있지 않기 때문에
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.core</artifactId>
<version>2.6.3</version>
<scope>provided</scope>
</dependency>
: 1
편집 # 나는로는 EclipseLink 종속성을 변경했습니다.
테스트 목적으로 응용 프로그램에서 수동 캐스팅을 수행하는 경우 예외가 발생하지 않습니다. ClassCastException는, getCriteriaBuilder()가 EntityManager로 불려 갔을 경우에 Throw됩니다.