gpt4 book ai didi

java - GAE、JDO、Jcache : can't put a list of entities to the cache

转载 作者:行者123 更新时间:2023-11-30 04:42:11 25 4
gpt4 key购买 nike

我有一个返回实体列表的查询。当我尝试将此列表放入缓存时,我得到了熟悉的 java.lang.IllegalArgumentException

但是...我可以毫无问题地将列表中的每个项目放入缓存。即使当我创建一个新的 LinkedList 时,使用 for 循环将实体从获取的列表复制到这个新列表并尝试将其放入缓存,它也能工作。

List<MyEntity> a = (List<MyEntity>) q.execute(getKey());

List<MyEntity> b = new LinkedList<MyEntity>();
for (MyEntity e : a)
b.add(e);

cache.put(key, b); // this works
cache.put(key, a); // this doesn't

那么我缺少什么?缓存其他查询有效,我不知道为什么这个不同。

最佳答案

很可能 JDO 查询返回的 List 不可序列化,因为它是动态代理。

要制作副本,您只需使用

List<MyEntity> b = new ArrayList<MyEntity>(a);

注意:这会根据 b 的元素创建一个新列表 a,但不会复制元素,因此它非常轻量级。

关于java - GAE、JDO、Jcache : can't put a list of entities to the cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com