Я использую динамический запрос для проекта.
Вот сценарий, для которого я столкнулся с проблемой.
Для таблицы xyz столбец version
хранится как varchar
(я знаю, что это плохой дизайн, но уже слишком поздно что-то менять) и имеет значения как 9,12
.
Для запроса:
select max(version)
from xyz
where something = 'abc';
Я получаю вывод как 9 вместо 12.
Динамический запрос для того же:
ClassLoader classLoader = PortletBeanLocatorUtil.getBeanLocator(ClpSerializer.getServletContextName()).getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(xyz.class, classLoader);
dynamicQuery.setProjection(ProjectionFactoryUtil.max("version"));
dynamicQuery.add(PropertyFactoryUtil.forName("something").eq("abc"));
List<Object> list = xyzLocalServiceUtil.dynamicQuery(dynamicQuery);
Запрос, который дает правильное значение:
select max(cast(version as signed))
from xyz
where something = 'abc';
Теперь я хочу, чтобы это было в динамическом запросе, как я могу это сделать?
Я использую liferay-6.2-ce