2014-11-15 3 views
0

최대 절전 모드 유효성 검사기를 사용하여 사용자 데이터의 유효성을 검사하는 코드가 있습니다. 사용자가 내 프로그램을 입력 할 수있는 엔티티가 있으며 추상 클래스 인 "AbstractEntity"에서 상속받습니다. 이 코드는 잘 동작했다.fasterxml 클래스 메이트에서 java.lang.ClassCastException이 발생하는 이유

하지만 AbstractEntity는 내가 작성한 또 다른 추상 클래스를 확장했습니다. 이제 인터넷에서 아무것도 찾을 수 없다는 예외가 생깁니다.

public class Bank extends AbstractEntity<Bank>{ 
public static Bank repo = new Bank(); 
@NotNull(groups = Insert.class) 
private String name; // with getters and setters 
protected Bank repo(){ 
    return repo; 
} 
} 

이 AbstractEntity이다 :

public abstract class AbstractEntity<T extends AbstractEntity> extends GenericRepository<T>{ 
@Min(1) 
@NotNull(groups = Update.class) 
protected Long id; // with getters and setters 
protected abstract T repo(); 
public String update(){ 
    repo().update(this); 
    return null; 
} 
public String delete(){ 
    repo().delete(id); 
    return null; 
} 
public String save(){ 
    repo().save(this); 
    return null; 
} 
} 

Set<ConstraintViolation<AbstractEntity>> constraintViolations = validator.validate(abstractEntity, Default.class, Insert.class); 

여기 예외를 생성 한 예 엔티티이다 : 여기

예외를 생성하는 코드 라인 AbstractEntity가 확장하는 GenericRepository입니다 :

public abstract class GenericRepository<T extends AbstractEntity> extends ApplicationContextAwareBean implements PagingAndSortingRepository<T, Long>{ 
private Class<T> aClass = (Class<T>) this.getClass(); 
private String tableName = aClass.getSimpleName().toLowerCase(); 
private RowMapper<T> rowMapper = new BeanPropertyRowMapper<>(aClass); 
private JdbcTemplate jdbcTemplate = (JdbcTemplate) ac.getBean("JdbcTemplate"); 
// also implements all methods from PagingAndSortingRepository 
} 
+0

종속성 문제 (최대 절전 모드 - 검증 및 빠른 XML 사이 버전 불일치)처럼 보이는 –

+0

종속성 트리 다음과 같습니다 : org.springframework.boot : 봄 - 부팅 스타터 웹 : 1.1.9.RELEASE 조직 .hibernate : hibernate-validator : 5.0.3.final com.fasterxml : classmate : 1.0.0 또한 최대 절전 모드 유효성 검사기와 클래스 메이트 각각에 대해 최신 버전을 사용해 보았습니다. – raven

+0

내 추측은 예외에 "ResolvedRecursiveType"이 포함되어 있으면 클래스 메이트가 은행 엔티티의이 필드에 문제가있을 수 있습니다. public static Bank repo = new Bank(); – raven

답변

0

정확한 원인을 찾지 못했지만 프로젝트에서 필요하지 않은 GenericRepository에서 PagingAndSortingRepository를 제거하여 제거 할 수있었습니다.

관련 문제