当我尝试进行下一个HQL查询时,我得到下一个错误:
org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类[package.CountItemLike]上找到合适的构造函数[SELECT new package.CountItemLike(ll.itemId,COUNT(ll.itemId))FROM package.ItemLike AS ll GROUP BY ll.itemId]
在我的DAO课程中
@Override
public List<CountItemLike> countItemLikes() {
String hql = "SELECT NEW package.CountItemLike"
+ "(ll.itemId, COUNT(ll.itemId)) "
+ "FROM ItemLike AS ll "
+ "GROUP BY ll.itemId";
Query query = this.getCurrentSession().createQuery(hql); // ERROR IS HERE
return (List<CountItemLike>) query.list();
}
Run Code Online (Sandbox Code Playgroud)
POJO
public class CountItemLike {
private int itemId;
private int likes;
public CountItemLike(int itemId, int likes){
this.itemId = itemId;
this.likes = likes;
}
public int getItemId() {
return itemId;
}
public int getLikes() {
return likes;
}
}
Run Code Online (Sandbox Code Playgroud)
count使用聚合函数时,返回值为Long .这就是为什么适用的构造函数是:
public CountItemLike(int itemId, Long likes){
this.itemId = itemId;
this.likes = likes.intValue();
}
Run Code Online (Sandbox Code Playgroud)
要么:
public CountItemLike(int itemId, long likes){
this.itemId = itemId;
this.likes = (int) likes;
}
Run Code Online (Sandbox Code Playgroud)
也许ItemLike.itemId之间还存在类型不匹配int,但是从给定的代码中看不到.
| 归档时间: |
|
| 查看次数: |
4208 次 |
| 最近记录: |