Reputation: 3805
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
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