Introduction : I had been struggling to execute this kind of query using the Dynamic Query
Select id, name from group where id=2;
So, thought may be useful to anyone looking for it.
Solution : Use ProjectionList
Map<String,Integer> resultsMap = new HashMap< String,Integer>();
ProjectionList projectionList = ProjectionFactoryUtil.projectionList();
DynamicQuery dynaQuery = DynamicQueryFactoryUtil
.forClass(Group.class);
projectionList.add(ProjectionFactoryUtil.property("id"));
projectionList.add(ProjectionFactoryUtil.property("name"));
dynaQuery.setProjection(projectionList);
dynaQuery.add(RestrictionsFactoryUtil.eq(
"id", 2));
try {
List<Object[]> ids = (GroupLocalServiceUtil
.dynamicQuery(dynaQuery));
for (Object[] o : ids) {
resultsMap.put((String) o[0], ((Long) o[1]).intValue());
}
} catch (SystemException e) {
e.printStackTrace();
}
This comment has been removed by the author.
ReplyDelete