hibernate/hibernate-orm · error · IllegalArgumentException

"Unsupported aggregate SQL type: " + aggregateColumnTypeCode

Error message

"Unsupported aggregate SQL type: " + aggregateColumnTypeCode

What it means

Error ""Unsupported aggregate SQL type: " + aggregateColumnTypeCode" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/dialect/aggregate/DB2AggregateSupport.java:210

						}
					case UUID:
						if ( SqlTypes.isBinaryType( column.getJdbcMapping().getJdbcType().getDdlTypeCode() ) ) {
							return template.replace(
									placeholder,
									"hextoraw(replace(xmlcast(xmlquery(" + xmlExtractArguments( aggregateParentReadExpression, columnExpression ) + ") as varchar(36)),'-',''))"
							);
						}
						// Fall-through intended
					default:
						return template.replace(
								placeholder,
								"xmlcast(xmlquery(" + xmlExtractArguments( aggregateParentReadExpression, columnExpression ) + ") as " + getCastTypeName( column, typeConfiguration ) + ")"
						);
				}
			case STRUCT:
				return template.replace( placeholder, aggregateParentReadExpression + ".." + columnExpression );
		}
		throw new IllegalArgumentException( "Unsupported aggregate SQL type: " + aggregateColumnTypeCode );
	}

	private static String xmlExtractArguments(String aggregateParentReadExpression, String xpathFragment) {
		final String extractArguments;
		final int separatorIndex;
		if ( aggregateParentReadExpression.startsWith( XML_EXTRACT_START )
				&& aggregateParentReadExpression.endsWith( XML_EXTRACT_END )
				&& (separatorIndex = aggregateParentReadExpression.indexOf( XML_EXTRACT_SEPARATOR )) != -1 ) {
			final var sb = new StringBuilder( aggregateParentReadExpression.length() - XML_EXTRACT_START.length() + xpathFragment.length() );
			sb.append( aggregateParentReadExpression, XML_EXTRACT_START.length(), separatorIndex );
			sb.append( '/' );
			sb.append( xpathFragment );
			sb.append( aggregateParentReadExpression, separatorIndex + 2, aggregateParentReadExpression.length() - 2 );
			extractArguments = sb.toString();
		}
		else {
			extractArguments = "'$d/" + XmlHelper.ROOT_TAG + "/" + xpathFragment + "' passing " + aggregateParentReadExpression + " as \"d\"";
		}

View on GitHub (pinned to fad1729dce)

Solutions

  1. Map the aggregate column with a supported SQL type.
  2. Avoid the unsupported aggregate type on DB2.

When it happens

Trigger: Triggered when the application calls a Hibernate dialect feature that the configured database dialect cannot provide: Unsupported aggregate SQL type (DB2).

Common situations: Common when running against a database whose dialect lacks this capability, when a mapping or HQL/Criteria query requests unsupported functionality, or when the wrong dialect is configured for the database in use. Error: Unsupported aggregate SQL type (DB2).


AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22). Data as JSON: /api/errors/5e51622c39d25a1d. Report an issue: GitHub.