问题标签 [hql]

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 投票
1 回答
404 浏览

nhibernate - 休眠标签云

我正在尝试让标签云架构在 NHibernate 中工作。

该表将映射到我的架构中的一些实体,因此我不想为每个关联向 Tag 类添加一个集合。

但是,我确实想查询标记实体并在所有连接表中返回 count(*)。我可以在 SQL 中轻松地做到这一点,但我还没有看到 NH 的光明。

开始写一些 HQL。

我加入什么?由于在对象模型中多对多桥表没有类和属性,这是否意味着这不能工作?

你有什么建议?我有兴趣看看这是否可以在标准中完成。

非常感谢,

伊恩

0 投票
3 回答
64199 浏览

hibernate - 在 ( ... ) 查询中编写 HQL 的正确方法

假设我想编写以下 HQL 查询:

将其编写为参数化查询的正确方法是什么,例如

0 投票
2 回答
4324 浏览

hibernate - 如何通过 hql 延迟加载一对一的组合

如果实体 A 与实体 B 具有双向一对一或零对一映射。

映射如下:

当我为 EntityA 执行 hql 查询(或者更确切地说是命名的 hql 查询)时,hibernate 会急切地使用单独的 select 语句加载 EntityA#propertyB。

我的问题是,如果我的 hql 返回 1000 个 EntityA(都有各自的 EntityB),hibernate 将执行 n+1 个查询(第一个查询是 EntityA 返回 1000 个结果,而 n 个查询将来自 EntityA# propertyB 选择延迟加载)。

但是,我不需要那些 EntityA#propertyB,这就是为什么我想延迟加载它们(不让休眠使用单独的 sql 查询)。

那可能吗?如果是,我该怎么做?

谢谢,弗兰兹

0 投票
2 回答
4052 浏览

hibernate - HQL 按查询排序给出问题

我有以下用 HQL 为 Hibernate 编写的查询。

==================================================== =======================

==================================================== ======================

执行上述查询时,会出现以下错误:

它为“按检查顺序排序”给出了此错误。如果我删除它,它工作正常。

谁能帮我解决这个问题?

谢谢。

0 投票
5 回答
2482 浏览

hibernate - 如何避免 HQL、Hibernate 中的硬编码字段名称?

假设我有以下 HQL:

如果我想重构并将MyEntity's 的成员变量的名称更改为其他名称aField,我还必须更改 Strings 中整个代码中的所有匹配项。如果我忘记更改一个 hql 字符串,代码就会中断。

我怎样才能避免这种情况发生?

0 投票
4 回答
42090 浏览

hibernate - 在 HQL 中加入无关联

假设我有两个表(A,B),例如:

我也有他们的实体。我想编写一个 HQL,以便结果集如下所示(其中 Ac = Bc):

由于on休眠不支持子句,我被卡住了,我不知道如何编写查询。

0 投票
4 回答
632 浏览

hibernate - 休眠查询问题,如此接近和难倒

架构:(伪代码)

我有一个名为 BaseEntity 的 bean ......

财产是另一种豆...

Value 实际上是一个抽象类,具有 Inheritence.SingleTable 和 NumericalValue 和 DateValue 等子类,以及(在抽象 Value 类中)@ManyToOne BaseType 类型。

目标:

我正在尝试编写一个查询,该查询选择具有特定名称类别的属性的 BaseEntity 对象,并选择其中的几个,获取具有任何给定属性的对象并在不存在的字段中获取 null。

尝试:

此查询确实运行。目前,数据库中有一个 BaseEntity 匹配,我多次使用正确的 foo 结果得到它,它确实包含,但同样的实体一遍又一遍地在 bar 字段中有许多值。

此外,它需要大约五分钟的时间来运行并支持使用数据库的其他所有人。

想法:

当然,我考虑过只使用某种 distinct,但这并不能解决运行所需的极端时间,而且我只是不太明白发生了什么。

我希望你,我的同龄人,可以提出更好的查询方法。非常感谢!


我会发表评论,但是这段代码对于评论框来说太长了......我运行了一个查询,这个查询没有那么长以至于它挂起,但是任何更多的连接并且它确实挂起而不是完成......这个查询需要MINUTES 执行。

我从我的代码中运行了查询,并在休眠属性中打开了 show_sql。

select baseentity0_.entityId as col_0_0_, property2_.value_valueId as col_1_0_, property4_.value_valueId as col_2_0_, property6_.value_valueId as col_3_0_, property8_.value_valueId as col_4_0_, property10_.value_valueId as col_5_0_, value11_.valueId as valueId9_0_, value12_.valueId as valueId9_1_, value13_.valueId as valueId9_2_, value14_.valueId as valueId9_3_, value15_.valueId as valueId9_4_, value11_.type_typeId as type6_9_0_, value11_.numericalValue as numerica3_9_0_, value11_.textValue as textValue9_0_, value11_.dateValue as dateValue9_0_, value11_.value_entityId as value7_9_0_, value11_.DTYPE as DTYPE9_0_, value12_.type_typeId as type6_9_1_, value12_.numericalValue as numerica3_9_1_, value12_.textValue as textValue9_1_, value12_.dateValue as dateValue9_1_, value12_.value_entityId as value7_9_1_, value12_.DTYPE as DTYPE9_1_, value13_.type_typeId as type6_9_2_, value13_.numericalValue as numerica3_9_2_, value13_.textValue as textValue9_2_, value13_.dateValue as dateValue9_2_, value13_.value_entityId as value7_9_2_, value13_.DTYPE as DTYPE9_2_, value14_.type_typeId as type6_9_3_, value14_.numericalValue as numerica3_9_3_, value14_.textValue as textValue9_3_, value14_.dateValue as dateValue9_3_, value14_.value_entityId as value7_9_3_, value14_.DTYPE as DTYPE9_3_, value15_.type_typeId as type6_9_4_, value15_.numericalValue as numerica3_9_4_, value15_.textValue as textValue9_4_, value15_.dateValue as dateValue9_4_, value15_.value_entityId as value7_9_4_, value15_.DTYPE as DTYPE9_4_ from BaseEntity baseentity0_ inner join BaseEntity_Property properties1_ on baseentity0_.entityId=properties1_.BaseEntity_entityId inner join Property property2_ on properties1_.properties_propertyId=property2_.propertyId inner join Value value11_ on property2_.value_valueId=value11_.valueId inner join BaseEntity_Property properties3_ on baseentity0_.entityId=properties3_.BaseEntity_entityId inner join Property property4_ on properties3_.properties_propertyId=property4_.propertyId inner join Value value12_ on property4_.value_valueId=value12_.valueId inner join BaseEntity_Property properties5_ on baseentity0_.entityId=properties5_.BaseEntity_entityId inner join Property property6_ on properties5_.properties_propertyId=property6_.propertyId inner join Value value13_ on property6_.value_valueId=value13_.valueId inner join BaseEntity_Property properties7_ on baseentity0_.entityId=properties7_.BaseEntity_entityId inner join Property property8_ on properties7_.properties_propertyId=property8_.propertyId inner join Value value14_ on property8_.value_valueId=value14_.valueId inner join BaseEntity_Property properties9_ on baseentity0_.entityId=properties9_.BaseEntity_entityId inner join Property property10_ on properties9_.properties_propertyId=property10_.propertyId inner join Value value15_ on property10_.value_valueId=value15_.valueId, Category category16_, Category category17_, Category category18_, Category category19_, Category category20_ where property2_.category_categoryId=category16_.categoryId and property4_.category_categoryId=category17_.categoryId and property6_.category_categoryId=category18_.categoryId and property8_.category_categoryId=category19_.categoryId and property10_.category_categoryId=category20_.categoryId and category16_.name='Sample Name / Strain' and category17_.name='Item #' and category18_.name='THC_Result' and category19_.name='CBD_Result' and category20_.name='CBN_Result'


好吧,我想跟进并说,两个连接语句的出色工作与五个连接语句的工作缓慢可笑。

select entity.id as entityId, strain.value as name, item.value as itemNum, thc.value as THC, cbd.value as CBD, cbn.value as CBN

from BaseEntity as entity join entity.properties as strain join entity.properties as item join entity.properties as thc join entity.properties as cbd join entity.properties as cbn where strain.category.name = 'Sample Name / Strain' and item.category.name = 'Item #' and thc.category.name = 'THC_Result' and cbd.category.name = 'CBD_Result' and cbn.category.name = 'CBN_Result'

有什么更好的方法可以用我愚蠢的模式更快地做到这一点吗?

0 投票
4 回答
70449 浏览

hibernate - 使用 HQL 查询日期而忽略 Oracle 上的时间

我有一张表(在 Oracle 9 及更高版本中),我需要在其中使用 Hibernate 查找给定日期的所有条目。条目具有时间戳(数据类型为“日期”)。有些条目有时间,有些只有日期。这是无法更改的,因为这是我无法更改的其他应用程序的输出。在 SQL 中,我会写一些类似的东西

获取我正在寻找的日期的所有条目。我想知道如何让 Hibernate 使用 HQL 来做到这一点。我知道我可以在 Hibernate 中使用 SQL 查询,但这似乎不太干净。有没有办法做到这一点?如果可能,这种方式也应该适用于以时间戳为数据类型的非 Oracle 数据库。

0 投票
3 回答
5399 浏览

java - Hibernate 多态查询

我有两个类,Person 和 Company,派生自另一个类 Contact。它们在两个表(Person 和 Company)中以多态形式表示。简化的类如下所示:

问题是我需要进行查询,以查找包含特定字符串的 displayName 的所有联系人。我无法使用 displayName 进行查询,因为它不是任一表的一部分。关于如何进行此查询的任何想法?

0 投票
1 回答
65210 浏览

java - 这个 HQL 有什么问题?“节点没有数据类型”

对我来说看起来不错,但结果是

为什么?怎么了?