Tony
Tony

Reputation: 3805

Custom List troubles

I'm trying to put some data from DB into custom List. Class:

public class TopTitles {

    private long count;
    private String title;
    private String url;

    public long getCount() {
        return count;
    }

    public void setCount(long count) {
        this.count = count;
    }

    public String getTitle() {
        return title;

    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getUrl() {
        return url;

    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String toString()
    {
        return count+" "+title+" "+url;
    }
}

And method:

public List<TopTitles> getTopTitlesRating() {
        Session session = null;

        session = this.sessionFactory.getCurrentSession();
        Query query = session
                .createSQLQuery("SELECT COUNT(title),title,url FROM SpyPath WHERE title!='Main page' GROUP BY title ORDER BY COUNT(title) DESC LIMIT 0, 10;");

        List<TopTitles> result = query.list();
        return result;
    }

Seems ok, but when I'm trying to

List<TopTitles> topTitlesList = spyPathService.getTopTitlesRating();
        System.out.println(topTitlesList.get(0).getTitle());

it shows

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to net.babobka.blog.domain.TopTitles

What's wrong?

UPD:

This is how I changed the method:

public List<TopTitles> getTopTitlesRating() {
        Session session = null;

        session = this.sessionFactory.getCurrentSession();
        Query query = session
                .createSQLQuery("SELECT COUNT(title),title,url FROM SpyPath WHERE title!='Main page' GROUP BY title ORDER BY COUNT(title) DESC LIMIT 0, 10;");

        List<?> result = query.list();
        List<TopTitles> list = new ArrayList<TopTitles>();
        for(Object o : result) {
            list.add((TopTitles)o);
        }
        return list;
    }

And still not working/

Upvotes: 1

Views: 51

Answers (1)

Vinayak Pingale
Vinayak Pingale

Reputation: 1315

Hibernate returns a raw List from the Query.list

List<TopTitles> list = new ArrayList<TopTitles>();
for(Object o : result) {
    list.add((TopTitles)o);
}

Use this list for iteration

Upvotes: 1

Related Questions