档案DTO
public class UserDto {
private String userId = "";
private String userName = "";
private String birthDay = "";
private byte[] avatar;
private String beginDate = "";
private String userRole = "";
private String deleteFlg = "";
private String editFlg = "";
private Set<ProjectMemberDto> projectMember;
//Getter Setter
}
查询
String sql = "SELECT * " +
"FROM T_USER LEFT JOIN " +
"T_PROJECT_MEMBER " +
"INNER JOIN T_PROJECT " +
"ON T_PROJECT_MEMBER.PROJECT_ID = T_PROJECT.PROJECT_ID " +
"ON T_PROJECT_MEMBER.MEMBER_ID = T_USER.USER_ID " +
"where T_USER.USER_ID like '%a%' " +
"and T_USER.USER_NAME like '%A%' " +
"and T_PROJECT.BEGIN_DATE <= '2014/06/25' " +
"and T_PROJECT.END_DATE >= '2014/06/25' " +
"ORDER BY T_USER.USER_ID";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(UserDto.class);
List<UserDto> listUser = query.list();
return listUser;
完成查询后我有一个List,但我不知道如何获取数据UserId,ProjectId,ProjectName .....
答案 0 :(得分:0)
您有一个带有DTO投影的本机查询,这样所有选定的数据都将是一个层次级别。
因此,Hibernate将采取查询结果并在一对一列填充DTO到字段映射。它不会填充ProjectMemberDto的集合,但您可以使用生成的一级数据自行完成。
要获取层次结构,您应该获取实体,假设您已准备好映射。
答案 1 :(得分:0)
在这一行:
List<UserDto> listUser = query.list();
您拥有UserDto列表,您可以遍历列表:
for(UserDto user: listUser){
user.getUserId(); //assuming you have proper setter and getter
}