`
kang275284
  • 浏览: 165699 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate多表联合查询解决办法

阅读更多
**
*制定一个类,该类的对象属性 obMap 将查询得到的每个字段的值存贮
*/

import java.util.TreeMap;

public class ListObject {
 private TreeMap   obMap;

 public TreeMap  getObMap() {
  return obMap;
 }

 public void setObMap(TreeMap  obMap) {
  this.obMap = obMap;
 }
}

 

  /**
  * 该类的对象将调用Session对象的方法对数据库进行各种操作
  */ 

public class ObjectHibernate{

................................................

  /**
  * 按条件查询记录(第一条记录位置,每次查询记录数)
  */
 public List findObject(int firstResult, int maxResults) {
  Session session = HibernateSessionFactory.currentSession();
  Transaction transaction = null;
  try {

   String strSql="select t.orderlistId ,t1.orderId,t1.orderTime," +
    " t.orderGoodsName ,t.orderGoodsCount from Orderlist t,Order t1 "+
    " where t.orderId=t1.orderId";
   transaction = session.beginTransaction();
   Query query = session.createQuery(strSql);
   if (query != null && query.list() != null
     && query.list().size() > 0) {
    query.setFirstResult(firstResult);
    query.setMaxResults(maxResults);
    transaction.commit();
    session.flush();

    List list=query.list();

    List list1=new ArrayList();      //该集合将封装后的ListObject存贮,并返回

   if (list != null && list.size() > 0) {
      Iterator it = list.iterator();
      ListObject lo = null;
      TreeMap  treeMap = null;
      while (it.hasNext()) {
       Object ob[] = (Object[]) it.next();
       treeMap = new TreeMap();
       for (int i = 0; i <ob.length; i++) {
         lo = new ListObject();
         treeMap.put(new Integer(i), ob[i]);
       }
    lo.setObMap(treeMap);
    list1.add(lo);
   }


    return list1; 
   } else {
    transaction.commit();
    session.flush();
    return null;
   }
  } catch (HibernateException e) {
   if (transaction != null)
    transaction.rollback();
   log.error(e);
   return null;
  } finally {
   if (session != null) {
    try {
     session.close();
    } catch (HibernateException e) {
     log.error(e);
     throw new RuntimeException(e);
    }
   }
  }
 }

..........................................................

 }

 

 

在Action中获得 ObjectHibernate类对象的 findObject(int firstResult, int maxResults)方法的返回值,并将该返回值放在HttpServletRequest中,取名为 ‘objectList’

 

 

 

 

 页面遍历 ListObject对象,并遍历其属性obMap(我用struts标签了)

..................................

   <logic:empty name="objectList">
       没有记录!!!
      </logic:empty>
   <logic:notEmpty name="objectList">
    <logic:iterate id="orderList" name="objectList">
     <tr>
      <logic:iterate id="oValue" name="orderList" property="obMap">
       <td>
        <bean:write name="oValue" property="key" />
        =
        <bean:write name="oValue" property="value" />
       </td>
      </logic:iterate>
     </tr>
    </logic:iterate>
   </logic:notEmpty>

 
分享到:
评论

相关推荐

    hibernate N+1问题解决办法

    **标题:“Hibernate N+1问题解决办法”** 在Java开发中,使用Hibernate作为ORM框架时,我们可能会遇到一个性能上的问题,那就是著名的“N+1查询问题”。此问题源于不恰当的数据加载策略,可能导致数据库查询效率...

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    3. **SQL查询异常**: Hibernate的HQL或Criteria API执行出错时,应检查查询语法是否正确,以及实体类和映射文件的对应关系是否一致。 4. **实体状态异常**: Hibernate在操作实体时会根据其生命周期状态进行处理,...

    Hibernate问题解决

    - **第二种解决办法:** 如果不需要使用`LEFT JOIN`或`RIGHT JOIN`,可以直接使用嵌套的`SELECT`查询。例如: ```java Query q = session.createQuery( "SELECT u.id, u.username, r.id, r.description " + ...

    数据库与Hibernate教案

    - 故障排查和性能优化:讨论常见问题及解决办法,如N+1查询问题,以及如何优化Hibernate查询性能。 通过本教案的学习,你将能够熟练掌握数据库的基本操作,理解Hibernate的核心功能,以及如何利用AJAX提升Web应用...

    HibernateDemo2

    【标题】"HibernateDemo2" 是一个基于...在CSDN博主的文章中,可能会详细讲解每个步骤,包括配置文件的编写、实体类的创建、数据库操作的实现以及可能遇到的问题和解决办法。对于初学者来说,这是一个很好的学习资源。

    hibernate延迟加载技术详细解

    - 另一种解决办法是在 HQL 查询或 Criteria 查询中使用 Join Fetching。 4. **配置示例**: - 在映射文件中可以配置 Fetching 策略,如: ```xml ``` - 对于双向关联,可以这样配置: ```xml ``` ...

    Hibernate学习笔记

    关联映射是Hibernate中的高级主题,包括多对一、一对多、一对一和多对多的映射方式。在一对多的关联映射中,一个父对象可以包含多个子对象,子对象通过外键指向父对象。一对一映射可以通过在主键上使用unique属性...

    Struts2+Spring+Hibernate 整合项目

    "说明.txt"文件可能包含了项目的部署指南、注意事项或使用说明,例如数据库连接配置、项目启动步骤、可能出现的问题及解决办法等。在整合SSH的过程中,配置文件的正确设置至关重要,如struts2的struts.properties、...

    Hibernate映射导致的几个异常

    解决办法是检查属性名是否正确,以及属性路径是否完整且符合实际的对象结构。 ### 4. Could not initialize proxy - the owning Session was closed 这是Hibernate懒加载机制中的常见异常,当尝试访问一个已被关闭...

    mysql “ Every derived table must have its own alias”出现错误解决办法

    这个错误通常发生在多表联合查询或者嵌套查询时,特别是当子查询的结果作为上级查询的一部分使用时。 在MySQL中,子查询是一种强大的工具,允许你在一个查询内部执行另一个查询,以获取更复杂的数据。然而,当子...

    JSON死循环解决办法

    在使用Hibernate这样的ORM框架时,由于其懒加载机制,可能会遇到JSON序列化时的死循环问题。这是因为CGLIB动态代理生成的对象在序列化时会递归地尝试序列化所有关联的对象,如果对象之间存在循环引用,就会导致无限...

    网上购物电脑商务网站Java/Jsp/Hibernate/Struts实现

    最后,实验报告是项目开发过程中的重要文档,它记录了开发者的思路、遇到的问题及解决办法,对于学习和理解整个项目的实现过程具有很高的参考价值。 总的来说,网上购物电脑商务网站的开发是一项综合性的任务,涉及...

    Spring MVC3复杂表单终极解决办法

    复杂表单通常涉及到多个关联对象的提交,比如用户信息与地址信息在一个表单中同时提交,或者订单与订单详情的关联数据。在Spring MVC中,这种复杂性可以通过模型绑定(Model Binding)和数据转换(Data Conversion)...

    基于StrutsHibernate网上论坛系统课程设计任务书.doc

    **基于Struts+Hibernate网上论坛系统设计** **一、系统设计背景及目的** 网上论坛系统是一种常见的社交平台,...在实际操作中,可能会遇到的问题和解决办法也是学习的重要部分,这些经验教训将成为宝贵的知识财富。

    错误及解决方案.pdf

    文档内容主要涉及到JavaEE Web应用开发中,特别是在使用Hibernate框架和Spring框架集成时遇到的错误及其解决办法。内容中多次提及了“lazy initialization”异常,这通常发生在尝试访问一个被延迟加载的集合时,但是...

    Java常见异常

    以下是一些Java中常见的异常及其解决办法: 1. **Caused by: line 1:188: expecting CLOSE, found 'null'** 这个错误通常表示解析错误,可能是因为在XML或HQL(Hibernate查询语言)中遗漏了关闭的括号或其他语法...

    JPA 开发中遇到的错误

    解决办法是确保所有在HQL查询中使用的实体和属性都已在JPA配置中正确声明。 ### 2. java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String 当尝试将一个对象数组转换为字符串时...

    青鸟一小部分教学.ppt

    2. **Hibernate映射文件**:映射文件(例如PetInfo.hbm.xml)定义了Java对象(实体类)与数据库表之间的映射关系,包括字段对应、主键设置、关联关系等。它使用XML格式,遵循Hibernate的Object/Relational Mapping ...

    ssh框架搭建实例

    解决办法是统一依赖版本或者使用排除机制。 - **性能优化**:对于性能瓶颈,可以通过调整缓存策略、优化查询语句、使用连接池等方式进行优化。 #### 七、总结 通过本课程的学习,你不仅了解了SSH框架的基础知识和...

Global site tag (gtag.js) - Google Analytics