如何删除所有“一对多” ColdFusion orm 实体中的项目?

发布于 2024-11-13 10:01:16 字数 375 浏览 2 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

硬不硬你别怂 2024-11-20 10:01:16

在 job.cfc 内部,必须实现清除项目的方法。

boolean function emptyItems()
{
    return arrayClear(variables.items);
}

然后...

job.emptyItems();

ColdFusion 的 arrayClear() 将在底层调用 Java 中的 clear()

这是唯一的方法,因为 ColdFusion 中的数组是按值传递的。因此,在 getItems() 之后清除它对 job.items 没有任何作用。愚蠢的我。

Inside job.cfc, must implement a method that clears the items.

boolean function emptyItems()
{
    return arrayClear(variables.items);
}

And then...

job.emptyItems();

ColdFusion's arrayClear() would call clear() 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.

绝不服输 2024-11-20 10:01:16

java 列表有一个(可选)clear() 方法。

然后代码将变成:

 job.getItems().clear()

AFAICS Coldfusion9 使用 Hibernate 作为 ORM,并且 Hibernate 确实在 List 抽象上实现了清除,甚至将其转换为到数据库的单个 DELETE 语句。

A java List has an (optional) clear() method.

The code would then become :

 job.getItems().clear()

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文