Java 如何为Hibernate编写返回两个实体的jstl代码
我有一个如下的Hibernate代码,它返回单个实体类:Java 如何为Hibernate编写返回两个实体的jstl代码,java,spring,hibernate,jstl,hibernate-mapping,Java,Spring,Hibernate,Jstl,Hibernate Mapping,我有一个如下的Hibernate代码,它返回单个实体类: SQLQuery query = session.createSQLQuery("select * from Employee"); query.addEntity(Employee.class); List<Employee> emplist= query.list(); SQLQuery查询= createSQLQue
SQLQuery query =
session.createSQLQuery("select * from Employee");
query.addEntity(Employee.class);
List<Employee> emplist= query.list();
SQLQuery查询=
createSQLQuery(“从员工中选择*);
查询.补遗(Employee.class);
List emplist=query.List();
对于上述代码,我的Jstl工作代码是:
<c:choose>
<c:when test="${requestScope.size!=0}">
<table border="1">
<tr>
<th>
EmployeeName
</th>
<th>EmployeeDepartment</th>
</tr>
<c:forEach items="${requestScope.absentlist}" var="emps">
<tr>
<td><c:out value="${emps.empno}"/></td>
<td><c:out value="${emps.empname}"/></td>
</tr>
</c:forEach>
雇员姓名
就业部
但我的要求是为返回两个实体的Hibernate编写jstl代码
以下是我的Hibernate代码:
SQLQuery query = session
.createSQLQuery("CALL AbsentReportproc(:_fromdate,:_todate)");
query.addEntity(Master.class);
query.addEntity(DateRange.class);
query.setParameter("_fromdate", "2012-12-03");
query.setParameter("_todate", "2012-12-04");
List<RecordSet> obj = query.list();
Iterator it=obj.iterator();
while(it.hasNext())
{
Object[] obj1 = (Object[]) it.next();
for (int i = 0; i < obj1.length; i++) {
RecordSet set=(RecordSet)obj1[i];
if(set instanceof Master){
System.out.println("Employee Code"+((Master) set).getEmpcode());
System.out.println("Employee Dept"+((Master) set).getDept());
System.out.println("Employee Name"+((Master) set).getEmpname());
}
if(set instanceof DateRange){
System.out.println("AbsentDate"+((DateRange) set).getDdate());
}
}
}
SQLQuery=session
.createSQLQuery(“调用AbsEnterproc(:_fromdate,:_todate)”;
查询补遗(主类);
addEntity(DateRange.class);
query.setParameter(“_fromdate”,“2012-12-03”);
query.setParameter(“_todate”,“2012-12-04”);
List obj=query.List();
迭代器it=obj.Iterator();
while(it.hasNext())
{
Object[]obj1=(Object[])it.next();
对于(int i=0;i
有谁能提供JSTL代码在jsp页面上显示上述结果吗?因此实际上您有一个
列表,列表中的每个对象[]
都包含一个Master实例作为第一个元素,一个DateRange实例作为第二个元素
首先编写一个包含这两个对象的类,这将使代码更易于阅读:
public class MasterAndDateRange {
private Master master;
private DateRange dateRange;
// constructor and getters omitted for brevity
}
然后遍历列表
,创建一个列表
然后将此列表存储在请求属性中(“listOfMasterAndDateRange”
,例如)
然后,在JSP中,使用JSTL迭代此列表:
<c:forEach var="masterAndDateRange" items="listOfMasterAndDateRange">
...
<c:out value="${masterAndDateRange.master.foo}"/>
...
<c:out value="${masterAndDateRange.dateRange.bar}"/>
...
</c:forEach>
...
...
...
根据您的代码,您正在调用存储过程,而不仅仅是单表查询。因此hibernate将只返回对象列表
您需要迭代循环并填充所需的对象
其他选项如@JB Nizet所建议。那么,它是一个列表
还是一个列表
?应该展示什么?怎么做?你的问题不清楚为什么你提供的JSTL不能同时适用于这两种情况。您可以发布支持对象的代码吗?当我调用list()方法时,我可以使用对象数组项,该数组项的obj[0]={Master obj,DateRange obj}等等…检查这个我已经用过但忘记在上面的链接中提到公共类Master extends记录集和公共类DateRange extends记录集你能给我示例代码我如何迭代吗请,我已经尝试过但面临类型转换异常object list=query.list();Iterator it=list.Iterator();虽然(it.hasNext()){MasterAndDateRange obj1=(MasterAndDateRange)it.next();}我已经尝试过了,但是面对类型转换异常对象无法转换到MasterAndDateRange,你能给我提供示例代码吗请阅读答案的前两句话:你有一个列表。由您将此列表转换为列表。通过迭代列表,将每个对象[]转换为MasterDateRange实例,然后添加到新列表中。不,我不能。你的工作就是提供代码。在列表上迭代并不是你应该害怕的事情。