问题标签 [icriteria]
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 ICriteria 查询是否被缓存或放入身份映射?
使用 NHibernate,我通常使用 Get() 或 Load() 方法查询单个记录(取决于我是否需要代理):
现在,如果我执行此语句两次,如下例所示,我只看到在我的单元测试中执行了一个查询:
到目前为止,一切都很好。但是当使用 ICriteria 查询获取相同的对象时,我注意到一些奇怪的行为。在下面查看我的代码:我得到了第一个对象实例。然后我将一个属性的值更改为 10(数据库中的值为 8),获取另一个实例,最后检查第二个对象实例的值。
现在,由于某种原因,断言失败,因为值是 obj2 的 10,即使我使用新查询请求对象。有趣的是,根据我的单元测试输出窗口执行了 2 个完全相同的选择查询。我的问题:如果从一级缓存中获取第二个对象,为什么会执行 2 个查询?
我错过了什么还是这是一个错误?
问候,特德
编辑 #1:使用 NHibernate v2.1.2GA 编辑 #2:我在最后一段中添加了一些关于正在执行的 2 个查询的额外解释。
nhibernate - 一级缓存可以与 ICriteria 或其他 API 一起使用吗?
在使用or方法NHibernate
时,您可以轻松地从一级缓存中受益。但是,和呢?他们也使用一级缓存吗?Load
Get
ICriteria
HQL
Linq-to-NHibernate
QueryOver
.net - NHibernate 分页结果和不正确的行数
我有一个名为“BusinessPage”的模型,它可以与 1 个或多个“BusinessPageCategories”相关联。所以我有一个名为“BusinessPagesInCategories”的第三个表,它链接了这两个表。
我正在尝试获取 BusinessPages 的分页记录集以及记录总数(我可能总共有 100 行,但一次只返回 20 行,但除了 20 行之外,我还传回了一个包含该总数的 int )。
我遇到的问题是,由于我实现了多对多关系,它带回了相同的 BusinessPage 行 x 次(其中 x 是 BusinessPage 关联的类别数)。我只希望返回每个业务页面的单个实例。因此,我将以下内容添加到我的 NHibernate Criteria 以提供 Distinct BusinessPage 结果。
虽然这对我有用,因为我现在正确地获得了每个 BusinessPage 的一行(并且每个 BusinessPage 中的 Categories 属性包含它分配给的正确 x 类别),但我的行数并没有反映“不同”的计数 -相反,如果我只有 1 个与 3 个类别相关联的 BusinessPage 记录,则行数为 3!?!
业务页面(模型)
BusinessPageCategory(模型)
BusinessPagesInCategories(用于关联两个模型的 SQL 表)
这是我用来获取“分页业务页面”的代码:
这是我的扩展方法,用于获取分页结果和所有重要的行数。
我对 NHibernate 还是很陌生,所以可能有一个简单的解决方案?
nhibernate - 查询多对多集合或如何在条件查询中包含多对多表?
我对 NHibernate 的世界很陌生,我似乎无法使用条件查询来解决这个问题:查询多对多关系或查询实体上的集合(集合/包)。我已经搜索了互联网并检查了我们拥有的所有 NHibernate 书籍,但我找不到我的“挑战”的具体答案。
我已经为我试图解决的问题做了一个简化的例子。我有一个带有书籍的表格,一个带有类别的表格和一个带有每本书类别的多对多表格。以下是一些技术细节:
数据结构:
C# 类:
NHibernate 映射:
我的问题:是否可以查询(使用 ICriteria 和/或分离标准)数据库,以便我获得属于我指定的类别之一的书籍(例如:在 catA 或 catB 中,可以是“和“也是)?我想在查询中优化它,而不是在 C# 中(因为我需要先从数据库中读取所有书籍,然后才能根据它们的标签集合过滤对象)。如果我手动编写 SQL,我会生成如下内容:
由于我没有 tableCategoriesPerBook 的实体,因此我看不到使用条件查询访问该表的方法。而且我宁愿不使用以下方法添加一些手写的 SQL 表达式:
最后一个重要因素:我使用的是棕地数据库,所以我无法更改结构!这就是我必须在数据库方面进行的工作。
nhibernate - NHibernate:标准 - 获取孩子 ID 的列表
我在多对多关系中有几个实体。给定父 ID,我如何使用 ICriteria 检索子列表?
到目前为止的代码:
但是,生成的 SQL 是:
如何让它生成以下内容?
nhibernate - 在 NHibernate 中使用 Postgres 聚合函数
我有以下查询:
此查询的示例输出:
(1) 如何围绕 array_agg 函数创建 NHibernate 标准?我是否需要以任何方式扩展 PostgreSQL 方言以适应这种情况?
(2) 我使用 SQLite 作为我的集成测试数据库,使用 PostgreSQL 作为我的测试/产品数据库。SQLite 没有 array_agg 函数,但有一个 group_concat 函数可以做类似的事情。是否可以设置一些东西,让我可以在测试中使用 SQLite,在测试/产品中使用 PostgreSQL?
(3) array_agg 以数组形式返回数据。我在nhibernate.info上找到了一篇很棒的文章,它解释了如何扩展 NHibernate 来处理 PostgreSQL 数组。我如何将其包含在我的标准中?例如,假设我想找到一个不是浪漫剧的戏剧类型的标题。
提前感谢您的帮助!
sql - 如何在 NHibernate 中编写以下 SQL 查询
嘿 - 我正在努力弄清楚如何使用 NHibernate ICriteria(多标准?)为以下内容编写以下内容:
(这是一个查询,以获取最后一天在表格中按受欢迎程度排序的名字列表)
此外,鉴于这只是表中的几列,不包括 ID,并且 NHibernate 需要 ID 来作为它的对象,那么“伪造”ID 的最简单方法是什么,以便我可以得到结果?
nhibernate - NHIbernate:设置子查询以使用外部查询中的属性值
我有以下子/标准:
这会导致以下 SQL 查询:
如何设置它以便我的子查询使用外部查询中的属性值?例如,我希望子查询按 title_id 值过滤。NHibernate 中是否有任何东西允许我将属性值投影到子查询?
谢谢!
nhibernate - NHIbernate:投影所有属性的快捷方式?
我正在尝试按照以下方式生成 SQL:
使用 QueryOver
我要投影的 Title 中有 15 个属性。有没有更简单的方法,这样我就不必像上面开始做的那样单独投影每个属性?
nhibernate - ICriteria 子查询
我必须简单的实体
我如何进行 ICriteria 查询,其中应该查询 EntityA.Name = 'SearchString' 和 List (((EntityB.Name='Name1' And (EntityB.Value=1)) And ((EntityB.Name='Name2')和 (EntityB.Value=1)))
搜索可以包含一个列表,我尝试了以下查询: