问题标签 [nhibernate-criteria]

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 投票
2 回答
4988 浏览

nhibernate - 流利的 NHibernate 和过滤需要多个连接的查询的一对多关系?

我最近开始使用 NHibernate,并且在实现进一步概述的域模型时遇到了一些麻烦。

我正在寻找的是一种过滤 Item 与其在特定 DataStore 上的 ItemData 集合之间的关系的方法。数据存储要么是全局的,在这种情况下它们总是被返回,要么是特定于用户身份的(基于应用程序实例)。

在 SQL 中,这可以使用一个简单的查询来完成:

数据库结构:

领域模型:

基本理论是为每个 DataStore 获取一个 ItemData 行,并在各个 DataStore 的权重字段上连接每一列(按权重排序的第一个非空值)。

关于是否以及如何在 NHibernate 中实现这一点的见解将不胜感激。

0 投票
1 回答
838 浏览

nhibernate - 来自标准查询的休眠 NamedQuery --> 需要帮助

我正在尝试将工作条件查询转换为命名查询,但语法不正确。hql 版本显然需要指定类型和 id 参数。

查询是在一个用 ANY 映射的类上(也在下面)

有人可以帮我弄清楚语法吗?

干杯,
贝里尔

WORKING标准查询

ANY 映射(有效!)

到目前为止命名的查询(不工作)

认为这是 hql 语法,但错误消息说缺少参数

更新

这个组合执行但给出了错误的答案。不知道它是否离我需要的更近或更远

0 投票
1 回答
126 浏览

nhibernate - NHibernate - 帮助 ICriteria

我正在尝试将以下 SQL 查询转换为 NHibernate 中的 ICriteria。

它们都在 NHibernate 中映射到称为 Models 和 ModelType 的类中。ICriteria.List 应返回 ModelType 类型的列表。

谢谢

0 投票
0 回答
1765 浏览

nhibernate - 休眠标准,例如单词

我想用休眠标准来做到这一点:

结果应该是:

我将搜索参数作为用户界面中的字符串“Re Wi”。

最好的方法是什么?拆分字符串并将 % 放在最后,加入字符串数组并最终得到:

或者我可以将各个部分(单词的开头)添加到某些标准表达式中吗?

0 投票
3 回答
14967 浏览

nhibernate - NHibernate 标准限制与表达式

如果我在 Internet 上搜索 NHibernate Criteria API 查询示例,则有些示例使用限制,而其他示例使用表达式。这两者有什么区别?

例如:

0 投票
1 回答
600 浏览

nhibernate - 字典/地图上的条件 API 和左连接

我有以下课程:

这些映射到表 Item、ItemTag 和 ItemLocal。我想通过条件 api 进行以下查询:

但我不知道如何使用 nhibernate 标准 api 执行左连接。特别是使用默认语言选择。

非常感谢任何帮助。

0 投票
1 回答
130 浏览

nhibernate - 如何为特定的 SQL 编写休眠条件?

我需要通过 ICriteria 编写类似的 SQL:

表:

1Lvl -- 2Lvl -- 3Lvl

SQL:

对于这么具体的问题,我很抱歉,但我从 exemployee 那里继承了 Hibernate 的项目,但我仍然无法理解 hibernate-criteria。

0 投票
1 回答
256 浏览

nhibernate - NHibernate Hierarchichal 使用单个查询获取数据

我在 DB 中有一个表,其中的列如下所示。

NHibernate 映射如下所示。

当我像下面这样查询 NHIbernate 时,我成功地获得了正确填写子集合的对象。

我面临的问题是每个孩子都会运行一个查询来填充似乎非常昂贵的对象。有没有办法简化这个?例如,在单个查询中,我应该能够获得完整的关系。

0 投票
3 回答
4604 浏览

.net - 如何解决糟糕的 nHibernate 集合初始化

n休眠3; 从 EAV 数据模式中检索 4xxx 条记录。当 nHibernate 或 .NET 第一次初始化这些集合时,我们看到了严重的惩罚。随后的调用似乎更有效地执行。在 SQL Server Management Studio 中运行相同的查询会导致预期的快速返回时间。

使用 Fluent 和运行时映射而不是 .hbm.xml;好奇序列化映射是否会有所帮助?

nHibernate Profiler 和 log4net 日志记录似乎并没有给我太多帮助。在这个过程中,总共有大约 140,000 个实体被水合。

附上我的 dotTrace 性能跟踪的屏幕截图,显示集合初始化惩罚: 慢 nHibernate 集合初始化的 dotTrace

尝试过 join 和 eager fetchtypes,但没有明显的结果,但不能 100% 确定我正确地实现了这些 - 是否只需要如此指定父级,还是需要标记子表?

通过 web.config 启用反射优化器(我认为): 启用反射优化器

这是花费最多时间的地方:

这只是一个扩展方法:

映射:

不幸的是,使用 .Future 我似乎仍然得到了类似的结果。这是一个新的踪迹;我已经切换到Release,关键项目暂时切换到x64,所以时间更短,但比例仍然几乎相同;以及.Eager:

dotTrace - 发布模式,针对 x64,使用 .Future()

生成的带有 .Eager 和 .Future 的 SQL:

选择 this_.ProductID 作为 ProductID0_1_, this_.ProductNumber 作为 ProductN2_0_1_, this_.ProductName 作为 ProductN3_0_1_, this_.InsertedDateTime 作为 Inserted4_0_1_, this_.UpdatedDateTime 作为 UpdatedD5_0_1_, this_.ProductGUID 作为 ProductG6_0_1_, this_.ProductTypeId 作为 ProductT7_0_1_, producttyp2_0_,_productType2 作为 ProductT .ProductTypeName as ProductT2_6_0_ FROM Product this_inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID;

选择 productatt0_.ProductId 作为 ProductId2_,productatt0_.ProductAttributeID 作为 ProductA1_2_,productatt0_.ProductAttributeID 作为 ProductA1_2_1_,productatt0_.PositionNumber 作为 Position2_2_1_,productatt0_.ValueText 作为 ValueText2_1_,productatt0_.ValueBinary 作为 ValueBin4_2_1_,productatt0_.ProductID 作为 ProductID2_1_,productatt0_.AttributeID0 作为 Attri2_1_ .ExpirationDateTime as Expirati7_2_1_, productatt0_.IsCurrentIndicator as IsCurren8_2_1_, productatt0_.OperationCode as Operatio9_2_1_, productatt0_.OperationDateTime as Operati10_2_1_, productatt0_.OperationSystemName as Operati11_2_1_, productatt0_.OperationUserName as Operati12_2_1_, productatt0_.LastUserPriority as LastUse13_2_1_, attribute1_.AttributeId as Attribut1_1_​​0_, attribute1_.AttributeName 作为 Attribut2_1_0_,attribute1_.DisplayName 作为 DisplayN3_1_0_,attribute1_.DataTypeName 作为 DataType4_1_0_,attribute1_.ConstraintText 作为 Constrai5_1_0_,attribute1_.ConstraintMin 作为 Constrai6_1_0_,attribute1_.ConstraintMax 作为 Constrai7_1_0_,attribute1_.ValuesMin 作为 ValuesMin1_0_,attribute1_.Values_Max 作为 ValuesPrecisions 作为_0_ Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_.AttributeId WHERE (productatt0_.IsCurrentIndicator=1) and productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)ConstraintText 作为 Constraint5_1_0_,attribute1_.ConstraintMin 作为 Constrai6_1_0_,attribute1_.ConstraintMax 作为 Constrai7_1_0_,attribute1_.ValuesMin 作为 ValuesMin1_0_,attribute1_.ValuesMax 作为 ValuesMax1_0_,attribute1_.Precision 作为 Precision1_0_ FROM ProductAttribute productatt0_inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_ productatt0_.IsCurrentIndicator=1) 和 productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)ConstraintText 作为 Constraint5_1_0_,attribute1_.ConstraintMin 作为 Constrai6_1_0_,attribute1_.ConstraintMax 作为 Constrai7_1_0_,attribute1_.ValuesMin 作为 ValuesMin1_0_,attribute1_.ValuesMax 作为 ValuesMax1_0_,attribute1_.Precision 作为 Precision1_0_ FROM ProductAttribute productatt0_inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_ productatt0_.IsCurrentIndicator=1) 和 productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)精度为 Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_.AttributeId WHERE (productatt0_.IsCurrentIndicator=1) 和 productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_。产品类型 ID)精度为 Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_.AttributeId WHERE (productatt0_.IsCurrentIndicator=1) 和 productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_。产品类型 ID)

选择 productgro0_.ProductId 作为 ProductId1_,productgro0_.ProductGroupId 作为 ProductG1_1_,productgro0_.ProductGroupId 作为 ProductG1_3_0_,productgro0_.ProductId 作为 ProductId3_0_,productgro0_.GroupId 作为 GroupId3_0_ FROM ProductGroup productgro0_ WHERE (productgro0_.IsCurrentIndicator=1) 和 productgro0_.ProductId in (select this_. ProductID FROM Product this_inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)

0 投票
2 回答
3104 浏览

nhibernate - 如何使用 NHibernate Criteria 创建此查询

我是 NHibernate 的新手,我无法找出使用 NHibernate 的 Criteria 引擎来表示某些 SQL 的最佳方式。这是对象模型的基本描述:

您可以从类中推断出底层表的样子,并且所有 NH 的东西都在 EntityBase 抽象类中。

本质上,我想提取特定公司拥有的所有项目或为该公司的某人提供 UserAssignments。以下是我在 SQL 中的做法:

我正在使用 DetachedCriteria,我什至无法让它工作,只是将 UserAssignment 的用户与公司相匹配,更不用说分配和所有者了。当我尝试这个时:

我收到一条错误消息,提示“无法解析属性:TestProject.Domain.UserAssignment 的 User.Company.Id。”

任何人都可以帮忙吗?