Liferay 7.2 dxp sp5
import com.liferay.portal.kernel.dao.orm.Criterion;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.ProjectionFactoryUtil;
import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
import com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil;
在我的情况下,我想获取列的最大值,所以我使用了这个查询
DynamicQuery dynamicQuery = MyTableLocalServiceUtil.dynamicQuery();
dynamicQuery.setProjection(ProjectionFactoryUtil.max("columnName1"));
DynamicQuery dynamicQuery2 = MyTableLocalServiceUtil.dynamicQuery();
dynamicQuery2.add(PropertyFactoryUtil.forName("columnName1").eq(dynamicQuery));
List<Object> dynamicQuery3 = MyTableLocalServiceUtil.dynamicQuery(dynamicQuery2);
这将返回一个列表,但在“columnName1”列中具有最大值。在这里我观察到一件事,如果 columnName1 具有多个最大值,那么它将返回该列数。支持如果 columnName1 的最大值为 50 但 3 行有 50,那么它将在列表中返回 3 个对象。
第二种情况:找到 columnName1 和 columnName2=anyValue 的最大值
DynamicQuery dynamicQuery = MyTableLocalServiceUtil.dynamicQuery();
dynamicQuery.setProjection(ProjectionFactoryUtil.max("columnName1"));
DynamicQuery dynamicQuery2 = MyTableLocalServiceUtil.dynamicQuery();
dynamicQuery2.add(PropertyFactoryUtil.forName("columnName2").eq(anyValue));
dynamicQuery2.add(PropertyFactoryUtil.forName("columnName1").eq(dynamicQuery));
List<Object> dynamicQuery3 = MyTableLocalServiceUtil.dynamicQuery(dynamicQuery2);
在这种情况下,我发现 columnName1 和 columnName2=anyValue 的最大值的动态查询和操作。如果 columnName2=anyValue 的行没有 columnName1 的最大值,则它返回空列表。