使用ProjectionFactoryUtil获取特定列 例如:我想从表DETAIL_TABLE中获取ID和名称
我正在使用动态查询
DynamicQuery dynQuery = DynamicQueryFactoryUtil.forClass(DetailTable.class);
ProjectionList projectionList = ProjectionFactoryUtil.projectionList();
projectionList.add(ProjectionFactoryUtil.property("ID"));
projectionList.add(ProjectionFactoryUtil.property("NAME"));
dynQuery.setProjection(projectionList);
之后使用
重新启动查询List<DetailTable> detailList = DetailTableLocalServiceUtil.dynamicQuery(dynQuery);
但是当我尝试迭代时,它会在下一行获得类强制转换异常
for(DetailTable dt : detailList){
}
例外是&#34; Ljava.lang.Object;无法转换为com.detail.model.DetailTable&#34;
Service util类返回相同的DetailTable列表,我不知道为什么它给我类抛出异常
如果不使用预测
,则不会发生异常答案 0 :(得分:2)
在DynamicQuery
中添加投影时,它会返回对象类型数组的列表。
在这里,您尝试使用List<DetailTable>
投射该结果,这就是它抛出异常的原因。
而是使用List<Object[]>
,然后根据其类型(db类型)强制转换数组项。