从一对多关系中检索Hibernate而不使用HQL

时间:2017-11-28 19:46:13

标签: java html hibernate jsp

我只是尝试在Hibernate中从一对多关系中检索一个值。但我坚持要获得价值观。

  

这里是场景 - 有中心和工作人员。中心就像办公室的分支。它有一名工作人员分配到中心   一名工作人员可以分配更多的中心。

有三个表称为“中心”,“工作人员”和“centerhasstaff”。 这是表Picture of ER

的结构

我需要从搜索中心分配到中心的员工表中获取“姓名”。

这是我的POJO文件

Center.java

 private Integer idCenter;
 private Branch branch;
 private String centerName;
 private String centerDay;
 private String centertime;
 private String isApprove;
 private String isActive;
 private String createdBy;
 private String centerNo;
 private Set centerHasStaffs = new HashSet(0);

CenterHasStaff.java

 private Integer idcenterHasStaff;
 private Center center;
 private Staff staff;

Staff.java

private Integer idStaff;
 private String nic;
 private String licenceNo;
 private String name;
 private String address1;
 private String address2;
 private String city;
 private Set centerHasStaffs = new HashSet(0);

这是我如何尝试在JSP页面上检索Staff名称。

 <%                    
                int i = 1;

                Session ss = DB.getSession();
                Criteria crr = ss.createCriteria(Center.class);
                crr.add(Restrictions.eq("isActive", "Active"));
                crr.add(Restrictions.eq("isApprove", "Approve"));

                List<Center> li = crr.list();

                for (Center el : li) { %>

            <tr>
                <th scope="row"><%= i++ %></th>
                <td><%= el.getCenterNo() %></td>
                <td><%= el.getCenterName() %></td>
                <td><%= el.getCenterDay() %></td>
                <td><%= el.getCentertime() %></td>
                <td><%= el.getCenterHasStaffs() %></td>
                <td><%= el.getCreatedBy() %></td>
                <td>OK</td>
            </tr>

            <%  }%>

这是我的结果集,如

Image of Resultset

**

  

是否可以在不使用HQL的情况下将员工姓名分配到中心?

**

2 个答案:

答案 0 :(得分:0)

查看结果集和对象图,这将返回一个列表

<td><%= el.getCenterHasStaffs() %></td>

假设中心分配了1名工作人员,那么您可以从列表中获取第一项

<td><%= el.getCenterHasStaffs().get(0).getName() %></td>

答案 1 :(得分:0)

我刚刚为我的问题找到了解决方案。这是更好的方法吗?

<%

        Iterator it = el.getCenterHasStaffs().iterator();

        while (it.hasNext()) {

        CenterHasStaff elem = (CenterHasStaff) it.next();
        out.print(elem.getStaff().getNameWithinitials());

                             }


%>