キャッシュからデータのリストを取得しようとすると、問題が発生します。Springキャッシュ - ClassCastException(ehcache)
CategoryServiceImpl:
@Service
@Transactional
public class CategoryServiceImpl implements CategoryService {
@Resource
private CategoryRepository categoryRepository;
@Override
@Caching(
put = {
@CachePut(value = "category", key = "'findByParrentId-' + #category.parentId + ',' + #category.user.userId"),
@CachePut(value = "category", key = "'findAll-' + #category.user.userId")
}
)
public Category add(Category category) {
return categoryRepository.saveAndFlush(category);
}
@Override
@Cacheable(cacheNames = "category", key = "'findByParrentId-' + #prntId + ',' + #userId")
public List<Category> findByParentId(long prntId, long userId) {
return categoryRepository.findByParentId(prntId, userId);
}
@Override
@Cacheable(cacheNames = "category", key = "'findAll-' + #userId")
public List<Category> findAll(long userId) {
return categoryRepository.findAll(userId);
}
}
私はカテゴリの一覧を取得しよう:
List<Category> categories = new ArrayList<>(categoryService.findByParentId(parentId, userSession.getUser().getUserId()));
私は例外を取得:
のClassCastException:ru.mrchebik.model .Categoryはjava.util.Listにキャストできません
のフルスタックトレース:あなたはこの同じキャッシュはリストを返すことを期待し、その後
@CachePut(value = "category", key = "'findByParrentId-' + #category.parentId + ',' + #category.user.userId")
と::http://pastebin.com/35A14ZW9
それは動作しますが、私は1つの要素しか与えません。私がすべての要素を与えたいなら、私は何をしなければならないのですか?今、私はこれを持っています: 'public List add(カテゴリカテゴリ){ categoryRepository.saveAndFlush(category); リストリスト=新しいArrayList <>(); list.add(カテゴリ); リターンリスト。 } 'Listのローカル変数を作成できますが、これはキャッシュではありません。 –
shank