Criteria Query -- 别名

     应用中的一点小问题,记下来备忘。

    先看一下类配置文件: 
    Activity.hbm.xml: 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.kingstargroup.eqa.evaluation.domain">
 <class name="Activity" table="EVA_ACTIVITY">
  <id name="id" type="string">
   <generator class="sequence">
    <param name="sequence">SEQ_MODEL</param>
   </generator>
  </id>
  <property name="name" />
  <property name="description" column="DESP" />
  <property name="open" column="IS_OPEN" />
  <property name="subject" />
  <property name="published" column="IS_PUBLISHED" />
  <property name="methods" column="METHOD" />
  <many-to-one name="model" column="MODEL_ID" />
  <set name="objects" inverse="true" cascade="all" order-by="ID">
   <key column="ACT_ID" />
   <one-to-many class="EvaObject"/>
  </set>
  <set name="expertGroup" inverse="true" cascade="all">
   <key column="ACT_ID" />
   <one-to-many class="ExpertGroup"/>
  </set>
 </class>
</hibernate-mapping>
再来看一下页面展示部分,注意一下标红的部分:
<ec:table items="activityList" var="act" width="100%" form="activityForm" action="listActivities.do"
	retrieveRowsCallback="limit" sortRowsCallback="limit" autoIncludeParameters="true">
	<ec:row>
		<ec:column property="itemlist" sortable="false" width="30" headerCell="selectAll">
			<input type="checkbox" name="itemlist" value="${act.id}" />
			<input type="hidden" name="openValue" value="${act.open}" />
		</ec:column>
		<ec:column property="rowCount" cell="rowCount" title="序号" sortable="false" />
		<ec:column property="name" title="名称" />
		<ec:column property="model.name" title="采用模型" alias="modelname" /> 
		<ec:column property="published" title="是否发布">
			<c:if test="${act.published == true }">
				是
			</c:if>
			<c:if test="${act.published == false }">
				否
			</c:if>
		</ec:column>
		<ec:column property="open" title="是否开放">
			<c:if test="${act.open=='1'}">
				是
			</c:if>
			<c:if test="${act.open=='0'}">
				否
			</c:if>
		</ec:column>			
		<ec:column property="description" title="描述" sortable="false" />
	</ec:row>
</ec:table>
      接下来是Criteria查询,注意作了标记的代码:
 private static Criteria createAcvivitylCriteria(String category, String open, Session session) {
  Criteria c = session.createCriteria(Activity.class);
  if (StringUtils.isNotBlank(category))
    c.add(Restrictions.eq("subject", category));
  if (StringUtils.isNotBlank(open))
    c.add(Restrictions.eq("open", open));
  c.createAlias("model","model");        //其实就是加个别名
  return c;
 }
      现在来说一下加别名的原因:在页面上用了<ec:table>展示,且有一个列是 Activity.model.name,当不加别名时,对此列一排序,程序就报错啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值