如何删除所有“一对多” ColdFusion orm 实体中的项目?
var items = job.getItems();
for (var item in items)
job.removeItem(item);
CF / Java 抛出
java.util.ConcurrentModificationException 在 java.util.AbstractList$Itr.checkForCommodification(AbstractList.java:372)
在没有 ConcurrentModificationException
的情况下删除所有项目的最干净方法是什么?
谢谢你!
var items = job.getItems();
for (var item in items)
job.removeItem(item);
And CF / Java throws
java.util.ConcurrentModificationException
at
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
What's the cleanest way to remove all items without ConcurrentModificationException
?
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 job.cfc 内部,必须实现清除项目的方法。
然后...
ColdFusion 的
arrayClear()
将在底层调用 Java 中的clear()
。这是唯一的方法,因为 ColdFusion 中的数组是按值传递的。因此,在 getItems() 之后清除它对 job.items 没有任何作用。愚蠢的我。
Inside job.cfc, must implement a method that clears the items.
And then...
ColdFusion's
arrayClear()
would callclear()
in Java underneath.That's the only way 'cause Array in ColdFusion is passed-by-value. Therefore, clearing it after getItems() does nothing to
job.items
. Silly me.java 列表有一个(可选)clear() 方法。
然后代码将变成:
AFAICS Coldfusion9 使用 Hibernate 作为 ORM,并且 Hibernate 确实在 List 抽象上实现了清除,甚至将其转换为到数据库的单个 DELETE 语句。
A java List has an (optional) clear() method.
The code would then become :
AFAICS coldfusion9 uses hibernate as ORM, and hibernate does implement clear on the List abstraction, and will even translate it to a single DELETE statement to the database.