Java 如何在执行HQL查询后从列表中检索数据

Java 如何在执行HQL查询后从列表中检索数据,java,hibernate,hql,Java,Hibernate,Hql,我一直被一个问题困扰着,Hibernate,我是新来的。 我的要求是根据以下查询获取数据: return (List<MssSowLineDetail>) yodaMssHibernateFactory.getCurrentSession(). createQuery("Select MSLD.itemDefinition.itemId from MssSowLineDetail MSLD, " +" MssSowHeaderDetail MSHD

我一直被一个问题困扰着,Hibernate,我是新来的。 我的要求是根据以下查询获取数据:

return (List<MssSowLineDetail>) yodaMssHibernateFactory.getCurrentSession().
createQuery("Select MSLD.itemDefinition.itemId from 
             MssSowLineDetail MSLD, " +" MssSowHeaderDetail MSHD 
             Where MSHD.sowHeaderId = MSLD.mssSowHeaderDetail.sowHeaderId "
            +"AND MSLD.itemDefinition.itemId = '" + itemNumber +"'").list();
我得到以下例外

 java.lang.ClassCastException: java.lang.String cannot be cast to com.att.yoda.mss.dataInfo.MssSowLineDetail

如果有人能给我一个快速的答复,我将不胜感激。如果我需要提供更多详细信息,请在此回复。

如果您希望检索bean数据,而不仅仅是
id
,那么在您的查询中使用 “
从…中选择MSLD
” 而不是
从…
中选择MSLD.itemDefinition.itemId”

这是显而易见的。您正在检索
id
,而不是整个对象。尝试使用
SELECT*…
,您将有一个对象列表。

从SELECT查询中,您只选择ID(MSLD.itemDefinition.itemdid),因此输出将是字符串中的ID。mssSowLineDetailList.get(0);将只返回字符串而不返回MssSowLineDetail。所以我应该只执行以下字符串id=(字符串)mssSowLineDetailList.get(0)?编号字符串mssSowLineDetail=mssSowLineDetailList.get(0);类似的,可以参考-
 java.lang.ClassCastException: java.lang.String cannot be cast to com.att.yoda.mss.dataInfo.MssSowLineDetail