出现错误 java.lang.ClassCastException:java.lang.String 无法转换为 [Ljava.lang.Object;
getting error java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;
我有这个函数,我正在尝试使用 sql 查询从 table 中提取名称。
@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;
这里需要一些帮助。
提前致谢:)
如果您在查询中使用一列,则列表元素的结果类型return被编辑为单个Object
。否则,如果使用许多列,则结果类型为每行 Object[]
。
来自文档:
public List list() throws HibernateException;
Return the query results as a List
. If the query contains
multiple results pre row, the results are returned in an instance of
Object[]
.
改变
List<Object[]> list = (List<Object[]>)query.list();
到
List list = query.list();
那么你的结果应该 return 只有一行 List
元素的 String
类型。
return (String)list.get(0);
我有这个函数,我正在尝试使用 sql 查询从 table 中提取名称。
@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;
这里需要一些帮助。
提前致谢:)
如果您在查询中使用一列,则列表元素的结果类型return被编辑为单个Object
。否则,如果使用许多列,则结果类型为每行 Object[]
。
来自文档:
public List list() throws HibernateException;
Return the query results as a
List
. If the query contains multiple results pre row, the results are returned in an instance ofObject[]
.
改变
List<Object[]> list = (List<Object[]>)query.list();
到
List list = query.list();
那么你的结果应该 return 只有一行 List
元素的 String
类型。
return (String)list.get(0);