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

HQL:如何选择按某个列区分的所有实体?

索正豪
2023-03-14
问题内容

一个简单的问题:
在此示例中,我需要检索所有对象,但是这些对象必须具有不同的msgFrom字段。
当我使用

List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);

我收到下一个错误:

java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.model.Message

我想这是因为Hibernate只检索一列,但是我需要一个对象,而不是列。
我怎样才能做到这一点?
我认为我可以只滚动逗号,即

List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom, m.To, m.datetime, .......... from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);

但是,如果我在这里有20多个字段怎么办?有一个简单的解决方案吗?

谢谢!


问题答案:

下面是示例查询:

select e from Message e 
where e.msgFrom IN (select distinct m.msgFrom 
                      from Message m
                      WHERE m.msgTo = ? 
                      AND m.msgCheck = "0");

或者,您也可以使用Criteria API。



 类似资料:
  • 问题内容: 我有一个包含大量数据的数据库。我想选择所有数据,但是按一列分组。 因此,例如: 在示例列中,A是具有重复值且需要分组的列。但是B列具有不同的值,我想选择所有这些值。 最后,我想得到一个查询,导致: B列的值在jQuery手风琴中。 我已经尝试并搜索了几个小时,但仍然没有找到一种方法来进行此操作。 编辑: 我已经设法使用戈登提供的答案解决问题。使用PHP,我分解了查询结果,并通过whil

  • 问题内容: 我有很多表具有相同的列“ customer_number”。我可以通过查询获取所有这些表的列表: 问题是如何从所有这些表中获取具有特定客户编号的所有记录,而不对每个表运行相同的查询。 问题答案: 我假设您要自动执行此操作。两种方法。 SQL生成SQL脚本 。 PLSQL 使用动态sql的类似想法:

  • 问题内容: 有没有比以下更有效的方法: 问题答案: 在查询中使用PARTITION(partitionN)语法应该非常少见。 通常,您只想为分区键指定值,并允许Oracle执行分区消除。例如,如果您的表每天根据TRANSACTION_DATE进行分区 将从今天的分区,昨天的分区和前一天的分区中选择所有数据。

  • 这是我的密码: 它返回表中所有列的数组。但我不需要把所有的专栏都写下来。我只需要返回以下列:。我对此进行了搜索并找到了答案:(使用函数) 但它并没有返回预期的结果。它返回以下内容: 如您所见,没有和列。我怎样才能修好它?

  • 本文向大家介绍MySQL 选择所有列(*),包括了MySQL 选择所有列(*)的使用技巧和注意事项,需要的朋友参考一下 示例 询问 结果 您可以通过执行以下操作从一个连接的一个表中选择所有列: 最佳实践*除非正在调试或获取row(s)关联数组,否则不要使用,否则架构更改(ADD / DROP /重新排列列)可能会导致讨厌的应用程序错误。另外,如果提供结果集中所需的列列表,MySQL的查询计划程序通

  • 我想我有两个实体具有双向的和关联: ——有很多-- 我想选择实体,其中所有关联的实体都将设置为 例如,如果我有以下数据: 起源: 孩子: 我想要一个HQL或JPQL查询,它返回1的实体。 知道吗?