当在hibernate中完成查询时,我想获取所有数据

当在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

文件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;

当完成查询时,我有一个列表,但我不知道如何获取数据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
}