使用ProjectionFactoryUtil时Liferay异常

时间:2014-08-08 08:08:21

标签: java liferay

使用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列表,我不知道为什么它给我类抛出异常

如果不使用预测

,则不会发生异常

1 个答案:

答案 0 :(得分:2)

DynamicQuery中添加投影时,它会返回对象类型数组的列表。

在这里,您尝试使用List<DetailTable>投射该结果,这就是它抛出异常的原因。

而是使用List<Object[]>,然后根据其类型(db类型)强制转换数组项。