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“类未与 Cayenne 映射”