我在运行在 Spring Boot 1.4.0M3 上的应用程序中遇到了一个奇怪的问题,该应用程序使用 Spring 缓存实现,其中提供者是 Redis,我收到 classCastException 无法转换相同的对象
我使用 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;
}
现在在我的 Spring MVC 中,在加载所有角色时,我正在调用所有权限,因为这是重复操作,我想到了缓存结果并使用 redis,并在加载角色值时收到以下异常。
raised java.lang.ClassCastException: com.learning.securedapp.domain.Permission cannot be cast to com.learning.securedapp.domain.Permission
帮助我克服这个错误。
我将源代码附加到我的项目中,并且在RoleController.java的第 91 行收到错误
要在本地环境中复制,登录到应用程序并单击权限菜单,然后单击角色菜单,在角色菜单中现在单击任何编辑图标。您将收到上述错误。