Smaill_ 2015-05-19 01:21 采纳率: 50%
浏览 3796
已采纳

hibernate多表查询返回object,有没有更好的解决办法

各位大神,您们好!小弟最近才开始学习hibernate,hibernate多表查询返回object的数组,有没有办法让它返回以主表为根对象的对象集合,根对象可以使用get子对象的方法获取到其它的从表映射的对象。fetch="join"

 <hibernate-mapping>
    <class name="com.zdsoft.entity.Sysuser" table="sysuser" catalog="ssh">
        <id name="userId" type="java.lang.Integer">
            <column name="userId" />
            <generator class="identity" />
        </id>
        <many-to-one name="sysemp" class="com.zdsoft.entity.Sysemp" unique="true" fetch="join">
            <column name="empId" />
        </many-to-one>
        <property name="userName" type="string">
            <column name="UserName" length="20" />
        </property>
        <property name="password" type="string">
            <column name="Password" length="50" />
        </property>
        <property name="status" type="java.lang.Integer">
            <column name="Status" />
        </property>
    </class>
</hibernate-mapping>
 /**
     * Hibernate分页
     * 
     * @param pageIndex
     * @param pageSize
     * @param clazz
     * @return
     */
    @SuppressWarnings("rawtypes")
    public Pager getPageObjects(Integer pageIndex, Integer pageSize, Class clazz) {
        DetachedCriteria criteria = DetachedCriteria.forClass(clazz).setProjection(Projections.rowCount());
        Pager page = new Pager();
        page.setCount(Integer.parseInt(this.getHibernateTemplate().findByCriteria(criteria).get(0).toString()));
        if (page.getCount() % pageSize == 0) {
            page.setPageCount(page.getCount() / pageSize);
        } else {
            page.setPageCount((page.getCount() / pageSize) + 1);
        }
        criteria.setProjection(null);
        // criteria.setResultTransformer(DetachedCriteria.ALIAS_TO_ENTITY_MAP);//以map的形式返回数据
        List list = this.getHibernateTemplate().findByCriteria(criteria).subList((pageIndex - 1) * pageSize, ((pageIndex * pageSize) > page.getCount() ? page.getCount() : (pageIndex * pageSize)));
        page.setPageIndex(pageIndex);
        page.setPageSize(pageSize);
        page.setList(list);
        return page;
    }
  • 写回答

2条回答 默认 最新

  • tuobana123 2015-05-19 02:40
    关注

    若是多表查询,从各个表中都要返回字段的话,可以参考我的这篇文章http://blog.csdn.net/pingnanlee/article/details/39493909

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试