首页 > 解决方案 > [Ljava.lang.Object; 不能转换为 ''

问题描述

我试图在目录中找到重复的电影。

在目录中,我有电影的 ID。

CatalogDaoImpl.class

@SuppressWarnings({ "unchecked" })
    @Override
    @Transactional
    public List<Movie> findMovies() {
        String query = "SELECT m.movie.id, count(m.movie.id)"
                + " from Catalog m group by m.movie.id"
                + " order by count(m.movie.id)";
        List<Movie> movies = getSession().createQuery(query).getResultList();

        return movies;
    }

当我尝试使用这个 dao 时,我得到下一个错误:

[Request processing failed; nested exception is java.lang.ClassCastException: 
[Ljava.lang.Object; cannot be cast to com.myapp.entities.Movie]

标签: hibernatehql

解决方案


该错误是因为您将方法返回类型声明为List<Movie>但事实上您正在查询List<Object[]>. 这是因为在您的SELECT子句中您指定了m.movie.id, count(m.movie.id).

如果你想要Movie对象,你应该SELECT m.movie......


推荐阅读