java.lang.ClassCastException: java.lang.String 不能转换为 [Ljava.lang.Object; 尝试通过 Hibernate 将列值获取到列表时

jsb9009

我正在使用 Hibernate 开发一个 Spring Web 应用程序。从表中获取列值到列表时遇到错误。但是这个错误不断出现。请帮我放。提前致谢。

@Repository
@Transactional
public class GetProjectsDaoImpl implements GetProjectsDao {

    @Autowired
    private HibernateUtilImpl  hibernateutilimpl;

    public List<Projects> getProjects() {

        String sql = "select project_id from project";

        List<Object[]> projectObjects = hibernateutilimpl.fetchAll(sql);

        List<Projects> projectsList = new ArrayList<Projects>();

        for(Object[] projectObject: projectObjects) {
            Projects project = new Projects();
            String id = (String) projectObject[0];

            project.setProjectId(id);

            projectsList.add(project);
        }
        return projectsList;
    }

}

@Repository
public class HibernateUtilImpl implements HibernateUtil {

    @Autowired
    private SessionFactory sessionFactory;

    public <T> Serializable create(final T entity) {

        return sessionFactory.getCurrentSession().save(entity);
    }

    public <T> T update(final T entity) {
        sessionFactory.getCurrentSession().update(entity);
        return entity;
    }

    public <T> void delete(final T entity) {

        sessionFactory.getCurrentSession().delete(entity);
    }

    @SuppressWarnings("rawtypes")
    public <T> List<T> fetchAll(String query) {
        return sessionFactory.getCurrentSession().createNativeQuery(query).list();
    }

}
迪帕克尔

我有以下建议。第一个变化:

List<Object[]> projectObjects = hibernateutilimpl.fetchAll(sql); 

至:

List<Object> projectObjects = hibernateutilimpl.fetchAll(sql);

接下来,更改:

for(Object[] projectObject: projectObjects) {
    String id = (String) projectObject[0];

for(Object projectObject: projectObjects) {
    String id = (String) projectObject;

需要进行上述更改,因为您只选择了一个列。Object[]仅在选择多于一列时使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档