List<SpacesDTO> list=session.createQuery("select new dto.SpacesDTO(s.id, s.num, s.state, s.type, o.name) from Spaces s inner join s.owner o").list();
SpacesDTO属性必须和查询信息一致 (s.id, s.num, s.state, s.type, o.name)
package dto;
public class SpacesDTO {
private int id;
private String num;
private String state;
private String type;
private String name;
public SpacesDTO(int id, String num, String state, String type, String name) {
super();
this.id = id;
this.num = num;
this.state = state;
this.type = type;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
注意:在SpacesDTO中必须根据属性(与查询内容对应)创建构造函数,否则会抛异常:[cause=org.hibernate.PropertyNotFoundException: no appropriate constructor in class: dto.SpacesDTO].