我是Spring,Hibernate环境的新手。我有两个表t1,t2也有两个POJO对象用于t1和t2。我需要使用Hibernate Template从两个表中检索所有数据。请有人给出答案。在此先感谢。
答案 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,从那里获取会话并使用它。