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

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 冰冻火山 2015-05-19 02:38

    多表查询你还用hibernate,如果再复杂点,看你怎么写?敢不敢用hibernate写个报表?
    所以建议你:多表,报表,复杂连接,还是用原生的SQL吧,直接返回一个List,摆平一切。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题