问题标签 [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.
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(我的模型在保存时提供了它们)。
.net - 在 .NET 中加入来自不同源数据库的两个数据表?
如何在 .NET 中连接来自不同源数据库的两个数据表?理想情况下,我可以手动制作两个查询并简单地加入一个字段。
在这种情况下,链接服务器和计划导入不是一个选项。我已经查看了数据关系对象,但是(如果我错了,请纠正我)仅适用于父子关系。
jpa - 有没有办法更改方法上的 JPA 获取类型?
有没有办法在不编辑实体对象的情况下更改单个方法的 JPA 获取类型?
我有一个由 JPA 实体类组成的共享 ORM 层。这个 ORM 层由两个 DAO 层访问。一个 DAO 需要延迟获取,因为它适用于我的 Web 应用程序,另一个需要急切获取,因为我需要它是线程安全的。
这是我的线程安全 DAO 中的示例方法,
我如何让这个方法(或整个类)使用渴望获取?
hibernate - 休眠:批处理大小?二级缓存?
我有一个由应用程序的不同部分加载的 Hibernate 域对象。有时延迟加载每个关联是有利的,而其他关联则最好在一个连接中加载整个事物。作为一个有希望的妥协,我发现:
使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对惰性选择抓取策略的优化。
hibernate.default_batch_fetch_size
:
使用批量获取,如果访问一个代理,Hibernate 可以加载多个未初始化的代理。批量抓取是对惰性选择抓取策略的优化。
我还看到:
hibernate.jdbc.fetch_size
:
非零值确定 JDBC 提取大小(调用 Statement.setFetchSize())。
那么 Hibernate 是否足够聪明,可以在批量获取时查看二级缓存?即为对关联的初始调用进行一次获取,然后下一个 X 调用命中缓存?这样我就可以进行我想要的延迟加载,但也可以经常访问缓存以进行更多类似批量的事务。
如果集合的全部内容已经包含在缓存中,它还会在访问集合时执行获取查询吗?
谢谢。
iphone - iphone tabbar 哪里加载数据?
我有两个使用相同数据的标签栏项目(视图),获取数据的最佳解决方案是什么?
在每个视图控制器中对相同的数据进行两次获取请求。
在 appDelegate 中发出一个 fetch 请求,并使用 sharedApplication 来获取 appDelegate 中的数据。如果数据发生变化,我可以使用 KVO 和通知来通知视图。
如果我必须选择,我显然会选择 2,但我想确保我做的事情是正确的。
谁能告诉我这是否是正确的方法?
hibernate - 如何更改hibernate的默认获取策略?
我知道hibernate的默认获取策略是LAZY集合,有没有办法通过配置文件更改系统范围内的默认获取策略?
nhibernate - NHibernate:批量大小是否限制为 10 个项目?
我遇到了 NHibernate 的问题(SQL Server 2000,如果重要的话)。
即使我指定 500,NHibernate 似乎使用等于 10 的批量大小(但如果我指定小于 10 的大小,比如 3 - 它使用 3)
我正在加载 11 个项目,并在 NHProf 中看到它执行两个查询:
nhibernate - 在 NHibernate 中强制进行急切的选择
我正在尝试使用选择热切地获取集合,但我得到的只是内部连接。到底是怎么回事?
我尝试将 FetchMode 更改为 Eager 但这不起作用 - 我仍然得到内部连接而不是单独的选择。我不确定它从哪里获得内部连接,因为文档中没有任何内容谈到 FetchMode 导致内部连接。是否有可能获得急切的选择?
更新 确定我发现创建别名会导致内部连接。所以我可以使用 .CreateAlias("Bars", "b", JoinType.None),但是b.Bazes的获取会恢复为延迟加载。呃。
c# - NHibernate:如何获取没有子集合的对象?
我的 Object1 类型的对象包含 List Children1 属性。我很想在没有孩子的情况下得到这些物品。
似乎 detachedCriteria.SetFetchMode ("Children1", FetchMode.Lazy) 应该是事情,但显然不是:(我尝试使用 (new SessionScope()) 获取数据并将 null 设置为 .Children1 但它没有成功(数据已被提取)。
任何想法,将不胜感激。
nhibernate - 这是使用 ThenFetch() 加载多个集合的正确方法吗?
我正在尝试使用NHibernate 3 alpha 1急切地加载所有集合。我想知道这是否是使用 ThenFetch() 的正确方法?
具有复数名称的属性是集合。其他只是一个对象。
我想在NHibernate 论坛上问这个问题,但不幸的是,我所在的地方禁止访问谷歌群组。我知道Fabio在这里,所以也许 NHibernate 团队的人可以对此有所了解?谢谢