EJB3.0 JPA 移除集合数据

heavilyarmed 2012-03-31 06:39:46
我通过DAO层,查询出的数据放在了实体BEAN 集合中,List<映射BEAN>.remove(index) 时报Caused by: java.lang.UnsupportedOperationException: Result lists are read-only. 是因为事物引起的吗?
...全文
146 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔡少松 2014-11-21
  • 打赏
  • 举报
回复
因为你那个List是pojo,你将你的List转换为普通的List实体,使用remove后,再将你的List转换回去即可。
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

- -! 不行,太奇怪了。
[/Quote]

恩,说明不仅仅是状态的问题。
你查询出来的list后,再拷贝一份list,在拷贝的list中来做remove操作。
heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
- -! 不行,太奇怪了。
heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
O(∩_∩)O谢谢 iisgirl 的帮助,在等等就结贴。
heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
不移除了,直接设为空。没找着原因
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

说错了,是远程调用,但用的不是webservice
[/Quote]

哦!那你好好检查一下!
heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
说错了,是远程调用,但用的不是webservice
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

不是,本地普通调用
[/Quote]

那你所谓的远程调用是?
heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
不是,本地普通调用
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

恩,实在想不通是为什么,我在本地按照这个流程走了一遍,数据可以被正常移除。但为什么远程调用就出现这种问题呢,究竟在那个环节出现了问题
[/Quote]

你是通过webservice调用的吗?
heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
恩,实在想不通是为什么,我在本地按照这个流程走了一遍,数据可以被正常移除。但为什么远程调用就出现这种问题呢,究竟在那个环节出现了问题
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

更悲剧了,我用这种方式
Java code

List copyBeanList=new ArrayList<Bean>();
Collections.addAll(copyBeanList,new Object[YBean.size()]);
Collections.copy(copyBeanList,YBean);


重新复制了一份,然后根据索引获取copyBeanList中的一条……
[/Quote]

那就是没有移除掉。

heavilyarmed 2012-04-01
  • 打赏
  • 举报
回复
更悲剧了,我用这种方式

List copyBeanList=new ArrayList<Bean>();
Collections.addAll(copyBeanList,new Object[YBean.size()]);
Collections.copy(copyBeanList,YBean);

重新复制了一份,然后根据索引获取copyBeanList中的一条数据,然后在copyBeanList.remove(),错到是不报了,但移除后的数据大小跟移除钱一样,- -
昨日凡阳 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

我试了,不行。我理解是因为在运行环境中,事物一直绑定了持久化数据,在远程调用时,不允许你更改数据。所以我在查询数据后,我执行了clear()使持久化数据从事务中剥离开,但同样报这个错。另外,集合类型中的是String类型,我重新copy了一个集合。但感觉他们的引用地址还是一个地方
[/Quote]

如果 你觉得是事物的影响,那你将持久化的状态转为游离状态试试。
heavilyarmed 2012-03-31
  • 打赏
  • 举报
回复
我试了,不行。我理解是因为在运行环境中,事物一直绑定了持久化数据,在远程调用时,不允许你更改数据。所以我在查询数据后,我执行了clear()使持久化数据从事务中剥离开,但同样报这个错。另外,集合类型中的是String类型,我重新copy了一个集合。但感觉他们的引用地址还是一个地方
昨日凡阳 2012-03-31
  • 打赏
  • 举报
回复
把你的Session改成FlushMode.COMMIT/AUTO或者清除事务定义中的readOnly标记试试

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧