问题标签 [fetching-strategy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
16554 浏览

nhibernate - NHibernate Eager 在多个级别上获取

我有一个 3 级实体层次结构:Customer-Order-Line,我想使用 ISession.Get(id) 为给定客户完整检索它。我有以下 XML 片段:

客户.hbm.xml:

order.hbm.xml:

我使用了 fetch="join" 属性来表示我想为每个父级获取子实体,这已经构建了正确的 SQL:

到目前为止,这看起来不错 - SQL 返回了正确的记录集(只有一个不同的 orderid),但是当我运行测试以确认 Orders 和 Lines 的正确实体数量(来自 NH)时,我得到了错误的结果

应该(从我的测试数据中)得到 1xOrder 和 4xLine,但是,我得到了 4xOrder 和 4xLine。NH 似乎没有识别结果集中的“重复”订单信息组,也没有正确“重用”订单实体。

我正在使用所有整数 ID (PK),并且我尝试使用此 ID 实现 T 的 IComparable 和 T 的 IEquatable,希望 NH 会看到这些实体的相等性。我还尝试覆盖 Equals 和 GetHashCode 以使用 ID。这些“尝试”都没有成功。

NH 是否支持“多级提取”操作,如果支持,是否需要 XML 设置(或其他机制)来支持它?


注意:我使用了 Sirocco 的解决方案,对我自己的代码进行了一些更改,最终解决了这个问题。对于所有集合,xml 需要从包更改为集合,并且实体本身已更改为实现 IComparable<>,这是建立唯一性的集合的要求。

请注意 InternalID 字段的使用。这是新的(瞬态)实体所必需的,否则它们最初不会有 ID(我的模型在保存时提供了它们)。

0 投票
1 回答
562 浏览

.net - 在 .NET 中加入来自不同源数据库的两个数据表?

如何在 .NET 中连接来自不同源数据库的两个数据表?理想情况下,我可以手动制作两个查询并简单地加入一个字段。

在这种情况下,链接服务器和计划导入不是一个选项。我已经查看了数据关系对象,但是(如果我错了,请纠正我)仅适用于父子关系。

0 投票
4 回答
32620 浏览

jpa - 有没有办法更改方法上的 JPA 获取类型?

有没有办法在不编辑实体对象的情况下更改单个方法的 JPA 获取类型?

我有一个由 JPA 实体类组成的共享 ORM 层。这个 ORM 层由两个 DAO 层访问。一个 DAO 需要延迟获取,因为它适用于我的 Web 应用程序,另一个需要急切获取,因为我需要它是线程安全的。

这是我的线程安全 DAO 中的示例方法,

我如何让这个方法(或整个类)使用渴望获取?

0 投票
1 回答
2437 浏览

hibernate - 休眠:批处理大小?二级缓存?

我有一个由应用程序的不同部分加载的 Hibernate 域对象。有时延迟加载每个关联是有利的,而其他关联则最好在一个连接中加载整个事物。作为一个有希望的妥协,我发现:

使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对惰性选择抓取策略的优化。

hibernate.default_batch_fetch_size

使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对惰性选择抓取策略的优化。

我还看到:

hibernate.jdbc.fetch_size

非零值确定 JDBC 提取大小(调用 Statement.setFetchSize())。

那么 Hibernate 是否足够聪明,可以在批量获取时查看二级缓存?即为对关联的初始调用进行一次获取,然后下一个 X 调用命中缓存?这样我就可以进行我想要的延迟加载,但也可以经常访问缓存以进行更多类似批量的事务。

如果集合的全部内容已经包含在缓存中,它还会在访问集合时执行获取查询吗?

谢谢。

0 投票
2 回答
180 浏览

iphone - iphone tabbar 哪里加载数据?

我有两个使用相同数据的标签栏项目(视图),获取数据的最佳解决方案是什么?

  1. 在每个视图控制器中对相同的数据进行两次获取请求。

  2. 在 appDelegate 中发出一个 fetch 请求,并使用 sharedApplication 来获取 appDelegate 中的数据。如果数据发生变化,我可以使用 KVO 和通知来通知视图。

如果我必须选择,我显然会选择 2,但我想确保我做的事情是正确的。

谁能告诉我这是否是正确的方法?

0 投票
1 回答
3168 浏览

hibernate - 如何更改hibernate的默认获取策略?

我知道hibernate的默认获取策略是LAZY集合,有没有办法通过配置文件更改系统范围内的默认获取策略?

0 投票
0 回答
2057 浏览

nhibernate - NHibernate:批量大小是否限制为 10 个项目?

我遇到了 NHibernate 的问题(SQL Server 2000,如果重要的话)。

即使我指定 500,NHibernate 似乎使用等于 10 的批量大小(但如果我指定小于 10 的大小,比如 3 - 它使用 3)

我正在加载 11 个项目,并在 NHProf 中看到它执行两个查询:

0 投票
3 回答
4475 浏览

nhibernate - 在 NHibernate 中强制进行急切的选择

我正在尝试使用选择热切地获取集合,但我得到的只是内部连接。到底是怎么回事?

我尝试将 FetchMode 更改为 Eager 但这不起作用 - 我仍然得到内部连接而不是单独的选择。我不确定它从哪里获得内部连接,因为文档中没有任何内容谈到 FetchMode 导致内部连接。是否有可能获得急切的选择?

更新 确定我发现创建别名会导致内部连接。所以我可以使用 .CreateAlias("Bars", "b", JoinType.None),但是b.Bazes的获取会恢复为延迟加载。呃。

0 投票
4 回答
1706 浏览

c# - NHibernate:如何获取没有子集合的对象?

我的 Object1 类型的对象包含 List Children1 属性。我很想在没有孩子的情况下得到这些物品。

似乎 detachedCriteria.SetFetchMode ("Children1", FetchMode.Lazy) 应该是事情,但显然不是:(我尝试使用 (new SessionScope()) 获取数据并将 null 设置为 .Children1 但它没有成功(数据已被提取)。

任何想法,将不胜感激。

0 投票
4 回答
5277 浏览

nhibernate - 这是使用 ThenFetch() 加载多个集合的正确方法吗?

我正在尝试使用NHibernate 3 alpha 1急切地加载所有集合。我想知道这是否是使用 ThenFetch() 的正确方法?

具有复数名称的属性是集合。其他只是一个对象。

我想在NHibernate 论坛上问这个问题,但不幸的是,我所在的地方禁止访问谷歌群组。我知道Fabio在这里,所以也许 NHibernate 团队的人可以对此有所了解?谢谢