我有一个在Hibernate中使用NativeQuery运行resultSetMapping的方法。它选择某些列(总是相同的列),进行一些筛选和分组,并使用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)用户有可能按组设置,并且存在问题。对于所有由用户组成的组的变体都可以为monthOfYear和monthOfYear(这两个变量在代码中都是int )的结果与IntegerType一起返回,但仅在customerId和customerId上分组时除外。然后,这两列的类型作为BigIntegerType返回。我尝试过在我的ColumnResult上设置ColumnResult,但是没有帮助。
数据库: Mysql 8.0.26
有人知道为什么我的SQLResultSetMapping中有不同的类型,这取决于我的组吗?
发布于 2021-09-13 13:00:14
我猜Oracle或JDBC驱动程序只是根据与查询计划器相关的一些差异来报告不同的列类型。最好还是显式地设置类型,以避免出现这样的问题。
https://stackoverflow.com/questions/69083299
复制相似问题