Hibernate FAQ(2)--分页显示和非主键的外键关联

本文介绍了使用Hibernate进行分页查询的方法及非主键外键关联的实现方式。通过具体的Java代码示例展示了如何实现分页功能,并通过XML配置文件说明了如何设置非主键的外键关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写:徐建祥(netpirate@gmail.com)

时间:2009-04-22 00:02

来自:http://www.anymobile.org

1、分页显示

publicclassQuizRecordDAOextendsBaseHibernateDAO
{
privateintcount;
publicintgetCount()
{
returnthis.count;
}


publicListlist(intstart,intrange)
{
log.debug("findingallQuizRecordinstance");
try
{
Criteriacriteria=getSession().createCriteria(QuizRecord.class);

count=((Number)criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);

//criteria.addOrder(Order.desc(TYPE));
criteria.setFirstResult(start);
criteria.setMaxResults(range);

returncriteria.list();
}

catch(RuntimeExceptionre)
{
log.error("findbypropertynamefailed",re);
throwre;
}

}


publicListlist(intawardStatus,intstart,intrange)
{
log.debug("findingallQuizRecordinstance");
try
{
Criteriacriteria=getSession().createCriteria(QuizRecord.class);
criteria.add(Expression.eq(AWARD_STATUS,Integer.valueOf(awardStatus)));

count=((Number)criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);

//criteria.addOrder(Order.desc(TYPE));
criteria.setFirstResult(start);
criteria.setMaxResults(range);

returncriteria.list();
}

catch(RuntimeExceptionre)
{
log.error("findbypropertynamefailed",re);
throwre;
}

}

}

2/ 非主键的外键关联

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
MappingfileautogeneratedbyMyEclipse-HibernateTools
-->
<hibernate-mapping>
<classname="org.anymobile.admin.entity.QuizRecord"table="quiz_record"catalog="fetion">
<idname="id"type="java.lang.Integer">
<columnname="id"/>
<generatorclass="increment"></generator>
</id>
<many-to-onename="yangzhouUser"class="org.anymobile.admin.entity.User"fetch="select"property-ref="fetionId">
<columnname="fetion_id"length="20"not-null="true"/>
</many-to-one>
</class>
</hibernate-mapping>
--property-ref="fetionId"是手工添加的代码
<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
MappingfileautogeneratedbyMyEclipse-HibernateTools
-->
<hibernate-mapping>
<classname="org.anymobile.admin.entity.User"table="f_user"catalog="fetion">
<idname="id"type="java.lang.Integer">
<columnname="id"/>
<generatorclass="increment"></generator>
</id>
<propertyname="fetionId"type="java.lang.String">
<columnname="fetion_id"length="10"not-null="true"unique="true"/>
</property>
<propertyname="phone"type="java.lang.String">
<columnname="phone"length="11"/>
</property>
<setname="records"inverse="true">
<!--
<key>
<columnname="fetion_id"length="15"not-null="true"/>
</key>-->
<keycolumn="fetion_id"property-ref="fetionId"/>
<one-to-manyclass="org.anymobile.admin.entity.QuizRecord"/>
</set>
</class>
</hibernate-mapping>
--绿色注释部分是Hibernate自动生成的,<key column="fetion_id" property-ref="fetionId"/>是手工添加的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值