我只是尝试在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>
<% }%>
这是我的结果集,如
**
是否可以在不使用HQL的情况下将员工姓名分配到中心?
**
答案 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());
}
%>