获取错误java.lang.ClassCastException:java.lang.String无法转换为[Ljava



我有一个函数,我正试图使用sql查询从表中提取名称。

@Override
@Transactional
public String getEmpNameFromId(long Id) {
final Session session = sessionFactory.openSession();
String name = "";
SQLQuery query = session.createSQLQuery("SELECT name from employee where id=" + Id);
List<Object[]> list = (List<Object[]>)query.list();//Object[] objs = (Object[])query.uniqueResult()
for (Iterator<Object[]> iterator = list.iterator(); iterator.hasNext();) {
Object[] e = iterator.next();
name = (String)e[0];//case object type to another by youself...
}
return name;
}

在我的数据库对象中,我将此函数调用为:

String empName = empDao.getEmpNameFromId(data.getId());
logger.info("name"+empName);

具有getEmpNameFromId函数的接口为:

public interface empDao {
String getEmpNameFromId(long Id);
}

我得到的例外是:

java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;

这里需要帮助。

提前感谢:)

如果在查询中使用一列,则列表元素的结果类型将作为单个Object返回。否则,如果使用了许多列,则结果类型为每行Object[]

来自文档:

public List list() throws HibernateException;

List的形式返回查询结果。如果查询包含行前的多个结果,结果在Object[]

更改

List<Object[]> list = (List<Object[]>)query.list();

List list = query.list();

然后,您的结果应该只返回一行List元素的String类型。

return (String)list.get(0);

相关内容

  • 没有找到相关文章

最新更新