Java 冬眠返回两个Pojo';并使用jstl在jsp上显示结果
我有我的pojo课程 大师:Java 冬眠返回两个Pojo';并使用jstl在jsp上显示结果,java,spring,hibernate,jstl,hibernate-mapping,Java,Spring,Hibernate,Jstl,Hibernate Mapping,我有我的pojo课程 大师: public class Master extends RecordSet{ private String empcode; private String empname; private String dept; public String getEmpcode() { return empcode; } public void setEmpcode(String empcode) { this.empcode = empcode; } pub
public class Master extends RecordSet{
private String empcode;
private String empname;
private String dept;
public String getEmpcode() {
return empcode;
}
public void setEmpcode(String empcode) {
this.empcode = empcode;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
日期范围:
public class DateRange extends RecordSet {
private String ddate;
public String getDdate() {
return ddate;
}
public void setDdate(String ddate) {
this.ddate = ddate;
}
}
记录集:
public class RecordSet {
private DateRange daterange;
private Master master;
public DateRange getDaterange() {
return daterange;
}
public void setDaterange(DateRange daterange) {
this.daterange = daterange;
}
public Master getMaster() {
return master;
}
public void setMaster(Master master) {
this.master = master;
}
}
我有我的HibernateCode:
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<Object[]> obj = query.list();
System.out.println(obj);
List<RecordSet> recordset = new ArrayList<RecordSet>();
Iterator it = obj.iterator();
while (it.hasNext()) {
Object[] object = (Object[]) it.next();
for (int i = 0; i < object.length; i++) {
RecordSet set = (RecordSet) object[i];
recordset.add(set);
System.out.println(set);
//Here I am able to print
//edu.model.Master@15093f1
//edu.model.DateRange@e6f7d2
//edu.model.Master@19836ed
//edu.model.DateRange@3e0ebb
//edu.model.Master@39443f
//edu.model.DateRange@e6f7d2 etc................
}
}
}
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();
系统输出打印项次(obj);
List recordset=new ArrayList();
迭代器it=obj.Iterator();
while(it.hasNext()){
Object[]Object=(Object[])it.next();
for(int i=0;i
我的要求是使用JSTL标记在jsp中显示来自(Master和DateRange)的结果
有谁能告诉我如何得到最终的List对象来迭代和显示来自两个pojo的结果
我想显示Master Pojo中的员工姓名、代码、部门和DateRange Pojo中的ddate
当我迭代记录集列表时,我无法打印值(获取空指针异常) 您可以这样做:
<c:forEach var="record" items="${recordset}">
<c:out value="${record.master.empcode}" />
<c:out value="${record.master.empname}" />
<c:out value="${record.master.dept}" />
<c:out value="${record.daterange.ddate}" />
</c:forEach>
编辑:
List<Object[]> obj = query.list();
List<RecordSet> recordset = new ArrayList<RecordSet>();
for (Object[] item: obj) {
Master master = null;
DateRange dateRange = null;
if (item[0] instanceof Master) {
Master master = (Master) item[0];
DateRange dateRange = (DateRange) item[1];
} else if (item[0] instanceof DateRange) {
DateRange dateRange = (DateRange) item[0];
Master master = (Master) item[1];
}
RocordSet record = new RecordSet();
record.setMaster(master);
record.setDateRange(dateRange);
recordset.add(record);
}
List obj=query.List();
List recordset=new ArrayList();
对于(对象[]项:obj){
Master=null;
DateRange DateRange=null;
if(主控设备的项目[0]实例){
主控=(主控)项[0];
DateRange DateRange=(DateRange)项[1];
}else if(项目[0]日期范围实例){
DateRange DateRange=(DateRange)项[0];
主控=(主控)项[1];
}
RocordSet record=新记录集();
记录。setMaster(主);
record.setDateRange(日期范围);
记录集。添加(记录);
}
并将记录集对象返回给jsp
希望这有帮助。您可以这样做:
<c:forEach var="record" items="${recordset}">
<c:out value="${record.master.empcode}" />
<c:out value="${record.master.empname}" />
<c:out value="${record.master.dept}" />
<c:out value="${record.daterange.ddate}" />
</c:forEach>
编辑:
List<Object[]> obj = query.list();
List<RecordSet> recordset = new ArrayList<RecordSet>();
for (Object[] item: obj) {
Master master = null;
DateRange dateRange = null;
if (item[0] instanceof Master) {
Master master = (Master) item[0];
DateRange dateRange = (DateRange) item[1];
} else if (item[0] instanceof DateRange) {
DateRange dateRange = (DateRange) item[0];
Master master = (Master) item[1];
}
RocordSet record = new RecordSet();
record.setMaster(master);
record.setDateRange(dateRange);
recordset.add(record);
}
List obj=query.List();
List recordset=new ArrayList();
对于(对象[]项:obj){
Master=null;
DateRange DateRange=null;
if(主控设备的项目[0]实例){
主控=(主控)项[0];
DateRange DateRange=(DateRange)项[1];
}else if(项目[0]日期范围实例){
DateRange DateRange=(DateRange)项[0];
主控=(主控)项[1];
}
RocordSet record=新记录集();
记录。setMaster(主);
record.setDateRange(日期范围);
记录集。添加(记录);
}
并将记录集对象返回给jsp
希望这能有所帮助。但是当我喜欢你的回答时,我会变得很失望values@Kumar您返回到jsp的对象是什么?我将记录集列表obj返回到jsp,就像您在回答中所做的那样。从代码中可以看出,记录集是空的。您可以尝试将obj列表传递给记录集构造函数:
list recordset=new ArrayList(obj)代码>。让我知道这是否有效。谢谢,我会尝试让你知道结果,但当我喜欢你的回答时,我会得到零values@Kumar您返回到jsp的对象是什么?我将记录集列表obj返回到jsp,就像您在回答中所做的那样。从代码中可以看出,记录集是空的。您可以尝试将obj列表传递给记录集构造函数:list recordset=new ArrayList(obj)代码>。让我知道这是否有效。谢谢。我会尽力让你知道结果