Apache Cayenne - 批量关系设置

Posted

技术标签:

【中文标题】Apache Cayenne - 批量关系设置【英文标题】:Apache Cayenne - Batch Relationship Setting 【发布时间】:2018-10-24 16:05:46 【问题描述】:

我想知道 Apache Cayenne 是否有一种方法可以使用他们的 .setTo 方法来设置关系,而不会在每次调用该方法时一次拉出一个对象。我正在处理数千行数据,每次设置关系时都必须查询对象,这需要花费几毫秒的时间,对于这么大的数据集,加起来需要几分钟。

我尝试过深入研究他们的文档,但其中一些被抽象掉了,这使得很难在他们的文档中找到我正在寻找的内容。希望有任何提示!

【问题讨论】:

我只是通过在调用 setTo 方法之前检查是否有新数据正在添加或更改来解决各种问题。它适用于我的目的。 【参考方案1】:

一个惯用的解决方案是在运行查询时显式地prefetch all relationships,如果您预期访问这些关系以获得很大比例的列表对象:

List<Artist> objects = ObjectSelect.query(Artist.class)
    .prefetch(Artist.PAINTINGS.joint())
    .select(context);

【讨论】:

感谢您的评论!嗯...不确定这就是我要找的。我已经有对象我正在设置存储在哈希图中的关系,所以我应该在本地拥有所有对象。我只是不确定如何禁用 .setTo 方法的自动行为以在调用该方法时查询数据库,直到我可以将所有对象的关系设置作为一组操作发送。无论如何,只要这样的功能是可能的。 如果该关系已解决,则在调用“setTo*”时,Cayenne 不应查询数据库。

以上是关于Apache Cayenne - 批量关系设置的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Apache Cayenne 尊重数据库默认设置?

Apache-Cayenne 自定义查询结果

如何以编程方式将颜色设置为 Cayenne

Apache Cayenne“类未与 Cayenne 映射”

Apache Cayenne 将数据从非 Cayenne 应用程序插入数据库

Apache Cayenne:java.io.StreamCorruptedException