public List showAllTask() {
try {
List results = getHibernateTemplate().find("select p.projectCname,t.taskName,t.taskBegindate,t.taskEnddate,t.taskStatus,t.userId from Project p left join p.tasks t where t.id>0 and t.deleted='0'");
return results;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
这个我的一个左连接方法我如何才是在jsp把我想要的字段取出来呢?
我原来都是这么写的"from Project p odery by id" 它返回时一个对象List可以在jsp中这样显示出来
<c:forEach items="${List}" var="it" begin="${pages.beginPosition}" end="${pages.endPosition}">
<tr>
<td> ${it.id}</td><td> ${it.userId}</td><td> ${it.taskName}</td> <td> ${it.taskBegindate} </td> <td> ${it.taskEnddate} </td><td> ${it.taskStatus} </td>
</tr>
</c:forEach> 但是我那个连接方法会报错 它好像返回的不是List<对象>
我该怎么做呢 如果能把我想要的结果显示出来????
try {
List results = getHibernateTemplate().find("select p.projectCname,t.taskName,t.taskBegindate,t.taskEnddate,t.taskStatus,t.userId from Project p left join p.tasks t where t.id>0 and t.deleted='0'");
return results;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
这个我的一个左连接方法我如何才是在jsp把我想要的字段取出来呢?
我原来都是这么写的"from Project p odery by id" 它返回时一个对象List可以在jsp中这样显示出来
<c:forEach items="${List}" var="it" begin="${pages.beginPosition}" end="${pages.endPosition}">
<tr>
<td> ${it.id}</td><td> ${it.userId}</td><td> ${it.taskName}</td> <td> ${it.taskBegindate} </td> <td> ${it.taskEnddate} </td><td> ${it.taskStatus} </td>
</tr>
</c:forEach> 但是我那个连接方法会报错 它好像返回的不是List<对象>
我该怎么做呢 如果能把我想要的结果显示出来????
public List showAllTask() {
try {
List results = getHibernateTemplate().find("select p from Project p left join p.tasks t where t.id>0 and t.deleted='0'");
return results;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}这里查询出来的还是包含若干个project对象的list如过你的project关联的tasks不是延迟加载的..
那么查询出来P时候 p的子对象tasks已经被填充了. 那些属性就这样获取
p.projectCname,
p.tasks.taskName,
p.tasks.taskBegindate,
p.tasks.taskEnddate,
p.tasks.taskStatus,
p.tasks.userId
...如果你的关联映射中tasks是延迟加载的,可以通过OpenSessinInView 解决因session关闭后访问子对象tasks的问题. spring提供了这样的一个过滤器来解决hibernate延迟加载的问题.
<tr>
<td> ${it.tasks.id}</td><td> ${it.tasks.userId}</td><td> ${it.tasks.taskName}</td> <td> ${it.tasks.taskBegindate} </td> <td> ${it.tasks.taskEnddate} </td><td> ${it.tasks.taskStatus} </td>
</tr>
</c:forEach>这样不行吗 报这个错javax.servlet.ServletException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.showTask_jsp._jspService(org.apache.jsp.showTask_jsp:107)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
cn.yw.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38)
cn.yw.util.AuthFilter.doFilter(AuthFilter.java:57)
cn.yw.util.NoCacheFilter.doFilter(NoCacheFilter.java:23)
所以遍历的时候
for(Object o:list){
Object[] arr=(Object[])o;
Sysetm.out.println(arr[0])
Sysetm.out.println(arr[1])
//......
}
这样可以得到里面的属性元素,你也可以再次封装太一个所有属性的POJO中。然后返回到前台显示。、