У меня возникла странная проблема в моем приложении, которая работает в Spring Boot 1.4.0M3, которая использует реализацию Spring cache, где поставщик Redis, где я получаю classCastException, что тот же объект не может быть литымjava.lang.ClassCastException: DTOObject не может быть передан DTOObject
Я использую MongoDB в качестве базы данных и у меня есть пользовательский объект, который содержит список ролей объекта загружается лениво и роли внутри содержит разрешение объект, как показано ниже
@Document
@Data
public class User implements Serializable{
private String passwordResetToken;
private boolean enabled = false;
@DBRef(lazy= true)
private List<Role> roleList;
}
Моей роль DTO как ниже
@Data
@Document
public class Role implements Serializable{
private String roleName;
private String description;
@DBRef(lazy= true)
private List<Permission> permissions;
}
Теперь, когда моя весна MVC загружает все роли, я вызываю все разрешения, и поскольку это повторяющаяся операция, я думал о кэшировании результата и использовании redis и при загрузке значения ролей, которое я получаю ниже исключения.
raised java.lang.ClassCastException: com.learning.securedapp.domain.Permission cannot be cast to com.learning.securedapp.domain.Permission
Помогите преодолеть эту ошибку.
Я прилагаю source code в мой проект и я получаю ошибку в строке 91 RoleController.java
реплицировать в локальной среде входа в приложение и нажмите на меню разрешений, а затем меню ролей, роли меню теперь нажмите на любой значок редактирования. Вы получите ошибку выше.
Если класс загружается дважды разными загрузчиками классов, jvm считает их неравными. Наверное, это то, что с тобой происходит. – joshiste
Похоже, вы используете военный файл, поэтому проблема, вероятно, связана с нашим контейнером приложения, содержащим несколько версий одного и того же класса. – Magnus
Я бегу от ide, и вижу только одну версию класса разрешений. – rajadilipkolli