当前位置: 首页 > 知识库问答 >
问题:

选择max(column_name)时,Hibernate中的转换出现问题

傅乐湛
2023-03-14

我有一个数据库表Cars,每一行代表不同的车型,具有不同的id、品牌、型号和数量。我想使用Hibernate编写一个查询,以获得按品牌划分的最受欢迎汽车的数量,例如,在DB中有5辆大众Polo、3辆大众Tiguan、4辆斯柯达Octavia、8辆斯柯德Rapid,我想得到一个结果:大众:5辆斯科达:8辆

这是我的疑问:

@Query(value = "SELECT brand, MAX(amount) FROM cars GROUP BY brand ORDER BY amount DESC", nativeQuery = true)
List<Car> getAmountOfMostPopularCarsByBrand();

接口车看起来是这样的:

interface Car {
    String getBrand();
    Long getAmount();
}

该查询在IntelliJ中工作正常,它带来了预期的结果,但是当我尝试在应用程序中使用它时:

List<Car> cars = getAmountOfMostPopularCarsByBrand()

我得到了具有良好的“品牌”字段的对象列表,但是对于空的“数量”字段,它只是没有被正确地映射(转换)。知道怎么解决吗?

共有2个答案

叶举
2023-03-14

通过自己映射解决了问题,所以查询方法返回

@Query(value = "SELECT brand, MAX(amount) as amount FROM cars GROUP BY brand ORDER BY amount DESC", nativeQuery = true)
List<Object> getAmountOfMostPopularCarsByBrand();

然后我可以做:

Collection cars = getAmountOfMostPopularCarsByBrand()
.stream()
.map(c -> return new Car((String)c[0], (long)c[1]))
.collect(Collectors.toList()));;
周凯捷
2023-03-14

我认为您需要使用MAX(数量)的别名:

@Query(value = "SELECT brand, MAX(amount) as amount FROM cars GROUP BY brand ORDER BY amount DESC", nativeQuery = true)

我认为transformer在查询结果中查找与类中属性名称匹配的头。

您的查询将返回标题为< code>brand | MAX(amount)的结果,我的查询将返回正确的标题:< code>brand | amount。

除此之外,这两个查询是相同的。

 类似资料:
  • 问题内容: 我有这样构建的mysql表: 当我做: 我得到: 为每个唯一用户生成一个唯一的post_id。 我需要gen_id列为1 2 3 4 5 6等。执行插入操作时如何增加此列。我尝试了以下方法,但无法正常工作。什么是正确的方法? 问题答案: 试试这个:

  • 我尝试向mysql搜索值时出错 当我运行应用程序时有此错误

  • 我正在尝试从一组大小未知的单选按钮中进行选择。(多套,但一步一步..)在实际站点上,它们不是值的text1。表单id是随机生成的,但遵循一种模式。所以我不能真的使用它。我得到了一个一致的课程.. 我已经尝试添加结束,什么也不会发生。

  • 我正在创建一个程序,它是银行账户系统的简单模型。我有一个简单的方法,当调用时要求用户输入名称(String)和起始账户余额(Double)并创建一个新的Person对象/帐户对象。 此方法通过使用1-9(int)选项的菜单调用,并说按下“1”创建新帐户。因此代码(在接受字符串之前)有一个默认输入。nextLine();在捕获实际名称输入之前捕获int输入的命令(customerName=input

  • 我正在尝试不同的方式选择一个特定的按钮使用seleninum webdriver与Java,但不幸的是,没有任何工作。 当我测试使用Selenium时,IDE是工作的。例如,我复制了相同的xpath,但当我试图在Java应用程序中进行测试时,任何东西都不起作用。我尝试使用不同的方法,通过.cssselector和通过.path。 这是我的HTML: 我需要选择带有文本“Create Applica

  • 问题内容: 我有一个像这样的numpy数组: 我这样进行转换以减少内存需求: 结果是: 但是,当我这样做时: 我得到: 有什么想法吗?最终,numpy数组包含用于二进制分类问题的标签。到目前为止,我已经像在Keras ANN中一样使用了它,并且效果很好,并且我取得了不错的性能。那么实际上有必要跑步吗? 问题答案: 您不需要使用,因为我猜您正在执行多标签分类。为了避免一劳永逸(!),让我解释一下。