Hibernate HQL不返回对象

Hibernate HQL不返回对象,hibernate,hql,Hibernate,Hql,我希望HQL返回对象而不是数组,因为我使用一些联接表,当我编写一个包含联接表列名的查询时,HQL给出的是数组列表而不是对象。我发现我们应该使用new使其成为对象 SELECT new Accommodation(a.name, a.rank, ap.pic) FROM Accommodation AS a INNER JOIN a.accommodationPics AS ap WHERE ap.isPromoPic = 1 AND a.cbState.stateName = :stateNam

我希望HQL返回对象而不是数组,因为我使用一些联接表,当我编写一个包含联接表列名的查询时,HQL给出的是数组列表而不是对象。我发现我们应该使用new使其成为对象

SELECT new Accommodation(a.name, a.rank, ap.pic) FROM Accommodation AS a INNER JOIN a.accommodationPics AS ap WHERE ap.isPromoPic = 1 AND a.cbState.stateName = :stateName
到目前为止,我已经尝试过这个方法,但出现了一个错误:“住宿”无法解析为类型。。有什么不对劲吗

更新

新建查询:选择New ba.reservation.pojo.accountationa.name、a.rank、ap FROM accountation作为内部连接a.accountationpics作为ap,其中ap.isPromoPic=1和a.cbState.stateName=:stateName


住宿必须在类名之前使用完整的包裹名称进行完全限定。

关于此查询:

错误的顺序有两种:

第一,正如simas_ch所说:

在案例中使用新对象时,必须使用所有命名空间路径完全限定对象

第二点:

必须在pojo定义中正确定义构造函数

如果你这样写:

new Accommodation(a.name, a.rank, ap.pic)
你必须有这样的a级建造师:

public Accommodation(String name, int rank, a.name, ArrayList<AccommodationPic> pic) {
    this.name = name;
    this.rank = rank;
    this.pic = pic;
}

你是说这个我相信:ba.reservation.pojo.Allocation。如果是这样,这也会产生相同的错误。1。正如simas_ch所说:添加有关班级住宿的完整路径。2.关于住宿,你定义了正确的构造函数了吗?@JoeTaras我只有一个默认的住宿构造函数。你必须添加一个类型为1、类型为2、类型为3的构造师,如果可以,请告诉我,所以我可以为未来的社区创造一个答案consult@JoeTaras这是一种好的,但我开始从阿贾克斯404后,我做了你告诉我的。我编辑了这个问题,只是想告诉你我到目前为止做了什么。
public Accommodation(String name, int rank, a.name, ArrayList<AccommodationPic> pic) {
    this.name = name;
    this.rank = rank;
    this.pic = pic;
}