【发布时间】:2021-11-04 01:27:13
【问题描述】:
我有一个在 Hibernate 中运行带有 resultSetMapping 的 NativeQuery 的方法。它选择一些列(总是相同的列),进行一些过滤和分组,并使用 Query.getResultList() 返回结果。
这是 ResultSetMapping
@SqlResultSetMapping(name = "MonthlySaleMapping", classes = @ConstructorResult(targetClass = MonthlySalesProjection.class, columns = {
@ColumnResult(name = "segment"),
@ColumnResult(name = "businessArea"),
@ColumnResult(name = "customerId"),
@ColumnResult(name = "customerGroupId"),
@ColumnResult(name = "category"),
@ColumnResult(name = "manufacturer"),
@ColumnResult(name = "organizationNumber"),
@ColumnResult(name = "year"),
@ColumnResult(name = "monthOfYear"),
@ColumnResult(name = "totalSales"),
@ColumnResult(name = "totalVAT"),
@ColumnResult(name = "tb"),
@ColumnResult(name = "quantity")
}))
这是构造函数
public MonthlySalesProjection(String segment, String businessArea, int customerId, int customerGroupId, String category, String manufacturer, String organizationNumber, int year, int monthOfYear, BigDecimal totalSales, BigDecimal totalVAT, BigDecimal tb, BigDecimal quantity)
用户可以设置组,问题就在这里。对于 group by 的所有变体,用户可以使用 IntegerType 返回 year 和 monthOfYear(在整个代码中都是 int)的结果,但仅在 customerId 和 customerId 上分组时除外。然后将这两列的类型作为 BigIntegerType 返回。我尝试在我的 ColumnResult 上设置 type=int.class,但没有帮助。
- 数据库:Mysql 8.0.26
- 连接器:mysql-connector-java:8.0.26
- 休眠:hibernate-core:5.4.31.Final
- Java:OpenJDK 11.0.12
有谁知道为什么我的 SQLResultSetMapping 会根据 group by 得到不同的类型?
【问题讨论】:
-
我现在已经将 year 和 monthOfYear 的构造函数参数更改为 Number 并且这似乎有效,但我仍然不知道为什么它会根据我的组返回不同的类型 by
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: java mysql hibernate hibernate-mapping