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