当前位置: 首页 > 面试题库 >

如何在Hibernate中执行非多态HQL查询?

洪研
2023-03-14
问题内容

我正在使用Hibernate 3.1.1,尤其是我正在使用HQL查询。

根据文档,Hibernate的查询是多态的:

像:这样的查询from Cat as cat不仅返回的实例Cat,还返回像的子类的实例DomesticCat

如何查询Cat的实例,但不查询其任何子类的实例?

我希望能够做到而不必明确提及每个子类。

我知道以下选项,但并不令人满意:

  1. 查询后手动过滤实例,或者:
  2. 在鉴别符列上手动添加WHERE子句。

Hibernate允许用户决定查询是否应该是多态的是很有意义的,但是我找不到这样的选项。

提前致谢!


问题答案:

使用polymorphism="explicit"的类映射。这将导致查询仅返回命名类的实例,而不返回其子类。

隐式多态性意味着该类的实例将由命名任何超类或已实现的接口或类的查询返回,并且该类的任何子类的实例将由命名该类本身的查询返回。显式多态性意味着类实例将仅由显式命名该类的查询返回。



 类似资料:
  • 问题内容: 我想在hibernateHql的同一查询中执行多个更新语句。如下所示: 在同一调用中,我想更新表1中的记录并从表2中删除记录。 那可能吗? 问题答案: 简而言之,您所看到的就像是JDBC中的批处理。Hichnate没有为批量更新查询提供Thich,并且我怀疑是否会为Hibernate考虑它。 根据我过去的经验,HQL的批处理功能在现实生活中很少有用。在SQL + JDBC中有用但在HQ

  • 问题内容: 在hibernate状态下,我想选择鉴别值。就像是 想法是将该查询的结果发送到客户端,以便我可以根据区分列(即猫,狗,大象等)的值显示不同的图标。 那可能吗?怎么样? 问题答案: 您可以按照以下步骤进行操作: 从Hibernate文档中: 在多态持久性的情况下,特殊属性类访问实例的鉴别符值。

  • 问题内容: 在休眠状态下,我想选择鉴别值。就像是 想法是将该查询的结果发送到客户端,以便我可以基于区分列(即猫,狗,大象等)的值显示不同的图标。 那可能吗?如何? 问题答案: 您可以按照以下步骤进行操作: 从Hibernate文档中: 在多态持久性的情况下,特殊属性类访问实例的鉴别符值。

  • 问题内容: Hibernate不支持union,所以我想单独运行sql。但是最后如何合并这些值? 请告知如何分别执行两个sql,最后如何合并这些值? 问题答案: 请注意,UNION中的每个SELECT语句必须具有相同的列数。 这些列还必须具有相似的数据类型。另外,每个SELECT语句中的列必须具有相同的顺序。 如果是这样,请向您的查询添加别名: 您可以通过以下方式使用SQLQuery和AliasT

  • 我的桌子描述是 我的疑问是 如何使用hibernate执行此查询。Hibernate应该返回类型为的对象列表。?

  • 如果您说这是不可能的,那么我必须坚持HQL,我会在这里张贴的查询,我将需要您的帮助写下基于HQL的类(表)创建和基于HQL的查询字符串。 此外,如果您可以,请给我一个示例查询与夫妇或3个表联接,以及如何设置参数的SQL。