簡體   English   中英

從一對多關系中檢索值無需HQL即可休眠

[英]retrieve value from One-To-Many relationship Hibernate Without HQL

我只是嘗試從Hibernate中的“一對多”關系中檢索一個值。 但是我堅持獲取價值。

這是方案-有中心和工作人員。 中心就像辦公室的分支。 並且有一名職員分配到中心,一名職員可以分配更多的中心。

有三個表,分別稱為“中心”,“工作人員”和“ centerhasstaff”。 這是表格的結構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頁面上檢索人員名稱的方法。

 <%                    
                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>

            <%  }%>

這是我的結果集

結果集的圖片

**

有沒有辦法在不使用HQL的情況下將職員姓名分配給中心?

**

查看結果集和對象圖,這將返回一個列表

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

假設中心分配了1名員工,那么您可以從列表中獲取第一項

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

我剛剛找到了解決我的問題的方法。 這是更好的方法嗎?

<%

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

        while (it.hasNext()) {

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

                             }


%>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM