当在hibernate中完成查询时,我想获取所有数据
文件DTO当在hibernate中完成查询时,我想获取所有数据,hibernate,Hibernate,文件DTO public class UserDto { private String userId = ""; private String userName = ""; private String birthDay = ""; private byte[] avatar; private String beginDate = ""; private String userRole = ""; private String delet
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;
当完成查询时,我有一个列表,但我不知道如何获取数据UserId、ProjectId、ProjectName…..您有一个带有DTO投影的本机查询,这样所有选定的数据都将是一个层次结构 因此Hibernate将获取查询结果,并在一对一列到字段的映射上填充DTO。它不会填充ProjectMemberDto的集合,但您可以使用生成的一级数据自己进行填充 要获取层次结构,您应该取而代之地获取实体,前提是您已经准备好了映射。在这一行中:
List<UserDto> listUser = query.list();
我不会选择*。select子句需要适合UserDto。顺便问一下:为什么不使用HQL查询,获取完整的对象,这就是为什么我们有一个ORM,不是吗?然后用普通的C代码把它放到DTO中?
for(UserDto user: listUser){
user.getUserId(); //assuming you have proper setter and getter
}