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

时间:2014-06-25 04:22:24

标签: 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 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 .....

2 个答案:

答案 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
}