Ich habe dynamische Abfrage für ein Projekt verwendet.Casting Strint zu Integer in Liferay dynamische Abfrage
Hier ist ein Szenario, für das ich ein Problem habe.
Eine Tabelle xyz die Spalte version
als varchar
(ich weiß, es ist ein schlechtes Design, aber es ist zu spät zu ändern) gespeichert und Werte wie 9,12
hat.
Für die Abfrage:
select max(version)
from xyz
where something = 'abc';
Ich bin die Ausgabe als 9 statt 12
Die dynamische Abfrage für das gleiche bekommen ist:
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);
Die Abfrage, die geben wird der korrekte Wert ist:
select max(cast(version as signed))
from xyz
where something = 'abc';
Jetzt möchte ich es in der dynamischen Abfrage, wie kann ich das tun?
Ich bin mit Liferay-6.2-ce
Dieses :) Danke für mich absolut in Ordnung war viel :) –