Issue
- Given the following DSL query:
DSLQuery testQuery = DSLQueryFactoryUtil.select(ddmfaTable.largeAttributeValue)
.from(ddmfTable)
.innerJoinON(ddmfaTable, ddmfaTable.fieldId.eq(ddmfTable.fieldId).and(ddmfaTable.storageId.eq(ddmfTable.storageId)))
.where(ddmfaTable.largeAttributeValue.isNotNull())
.limit(0, 1);
List<String> largeValues = DDMFieldLocalServiceUtil.dslQuery(testQuery);
- An error message is displayed after being executed:
ERROR [http-nio-8080-exec-7][BasePersistenceImpl:634] Caught unexpected exception
java.lang.IllegalArgumentException: DDMFieldAttribute.largeAttributeValue
at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl._getType(BasePersistenceImpl.java:1166) ~[portal-kernel.jar:?]
at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.dslQuery(BasePersistenceImpl.java:266) ~[portal-kernel.jar:?]
at com.liferay.dynamic.data.mapping.service.base.DDMFieldLocalServiceBaseImpl.dslQuery(DDMFieldLocalServiceBaseImpl.java:137) ~[?:?]
Environment
- Quarterly Releases: 2024.Q3, 2024.Q2, 2024.Q1, 2023.Q4, 2023.Q3
Resolution
- CLOB columns should be cast with an alias like this:
DSLQuery dslQuery = DSLQueryFactoryUtil.select(DSLFunctionFactoryUtil.castClobText(ddmfaTable.largeAttributeValue).as("castedLargeAttributeValue"));