使用hibernateTemplate从两个以上的表中检索数据

时间:2011-12-12 06:31:23

标签: hibernate spring-mvc

我是Spring,Hibernate环境的新手。我有两个表t1,t2也有两个POJO对象用于t1和t2。我需要使用Hibernate Template从两个表中检索所有数据。请有人给出答案。在此先感谢。

2 个答案:

答案 0 :(得分:1)

称之为:

protected List findAll(Class clazz) {
    return getHibernateTemplate().find("from " + clazz.getName());
}

此函数将返回一个对象列表。

更新

String hql="SELECT T.* FROM TEST T, STUDENT S WHERE S.DNO=? AND S.CLASS_ID=T.CLS_ID AND T.STATUS='A' AND T.BATCH=S.BATCH AND T.SHIFT=S.SHIFT";
List list = getHibernateTemplate.find(hql,"condition");

答案 1 :(得分:1)

假设您已正确配置了hbm文件/带注释的pojo和Spring,您可以使用session.createSQLQuery(sqlQuery)提交SQL查询,以便从两个表中选择数据(如果您想一次性完成此操作)。你可以在结果中得到一个Object []。否则,您可以像subodh推荐的那样触发单独的查询。

检查here以获取参考。

        return this.getHibernateTemplate().execute(new HibernateCallback<List>() {

        @Override
        public List doInHibernate(Session session) throws HibernateException, SQLException {

            String sqlQuery = "yourQueryHere";
            SQLQuery query = session.createSQLQuery(sqlQuery);
            List lstData = query.list();

            for (Object row : lstData) {
                Object[] recordArray = (Object[]) row;
                //recordArray[1] , recordArray[2] will give the columns

            }



        }
    });

或代替回调,您可以使用

this.getHibernateTemplate().getSessionFactory().getCurrentSession() 

获取会话对象。不推荐使用hibernate模板从Spring 3.0开始。你可以注入sessionFactory,从那里获取会话并使用它。