我試圖顯示一個從使用顯示標記(http://displaytag.sf.net)的JSP表上的Hibernate查詢調用獲得的結果,但它不工作。 該查詢包含一個計數函數來獲取行數。例外:[.LookupUtil]查找屬性時出錯。如何在jsp頁面上使用顯示標籤將hibernate結果顯示爲表格?
public List<MyClass> getResults(String section)
{
try
{
List<MyClass> resultList = null;
final Session session = sessionFactory.getCurrentSession();
//Forming the inner query.
DetachedCriteria innerCriteria = DetachedCriteria.forClass(MySecondClass.class,"mySecondClass")
.add(Restrictions.eq("mySecondClass.section", section))
.setProjection(Property.forName("classId"));
//Form the outer query now.
final ProjectionList projection = Projections.projectionList();
projection.add(Projections.rowCount(),"count");
projection.add(Projections.groupProperty("companyName"));
final Criteria criteria = session.createCriteria(MyClass.class, "myClass");
criteria.add(Subqueries.propertyIn("classId", innerCriteria));
criteria.setProjection(projection);
resultList = criteria.list();
logger.info("Returned result with list "+resultList.size());
return resultList;
}
catch (Exception e)
{
e.printStackTrace();
}
}
下面的查詢使用上面休眠代碼表示:
Select Count(*),companyName from MyClass
where classId in (Select classId from MySecondClass where section='someValue')
group by companyName
查詢返回無論是在查詢瀏覽器以及通過在Java休眠正確的值。當試圖使用來顯示結果在JSP:
<display:table id="rowId" pagesize="5"
requestURI="/admin/getResult" name="resultList"
style="width: 100%;"
class="displayTable table table-bordered table-striped table-condensed">
<display:column property="companyName" title="Company"
class="displayTable"></display:column>
<display:column property="count" title="Row Count"
class="displayTable"></display:column>
</display:table>
在運行從UI應用程序中,示出以下錯誤:
javax.servlet.ServletException:javax.servlet.jsp.JspException:異常:[.LookupUtil]在對象類型「[Ljava.lang.Object;」中查找屬性「companyName」時出錯。原因:未知媒體資源'companyName' org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:141) org.displaytag.model.Column.getValue(Column.java:124) org.displaytag.model.Column。 createChoppedAndLinkedValue(Column.java:201)
結果集與顯示錶標記的綁定未正確完成。 我試過了解StackOverFlow中的其他信息,但沒有看到任何代碼錯誤。 另外如何在Java端顯示計數值。
不知何故,它無法從列表對象中獲取屬性名稱。我如何提供getter作爲投影中設置的動態屬性count? –