6

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;
}

春のMVCでは、すべてのロールをロードしているときにすべての権限を呼び出しています。これは繰り返しの操作であるため、結果をキャッシュしてredisを使用し、例外の下で受け取ったロール値をロードすることを考えました。

raised java.lang.ClassCastException: com.learning.securedapp.domain.Permission cannot be cast to com.learning.securedapp.domain.Permission

このエラーを克服するのを手伝ってください。

プロジェクトにソース コードを添付すると、 RoleController.javaの 91 行目でエラーが発生します。

ローカル環境でレプリケートするには、アプリケーションにログインし、[権限] メニューをクリックしてから [役割] メニューをクリックします。[役割] メニューで任意の編集アイコンをクリックすると、上記のエラーが表示されます。

4

4 に答える 4