(转载)
今天遇到了一个大问题,hibernate的继承分页bug。只要加上分页就不查出结果为0……
有个hibernate警告:
[WARN] firstResult/maxResults specified on polymorphic query; applying in memory!
据说具体原因是hibernate本身的一个bug:参见(人家的劳动成果,不好直接粘过来,大家可以去看看)
http://blog.sina.com.cn/s/blog_4a87727d0100d8dm.html
嘿嘿,上午还愁来着呢,现在已经解决了。
主要就是要注意一下继承时配置文件hbm的配置。
比如说person类和Employee类。Employee继承person。
在java文件中就要在Employee类后面加个extends person。
在配置文件中,不在需要单独为Employee类做hbm映射文件。
<class name="Person">
<!-- 映射标识属性 -->
<id name="id" column="person_id">
<!-- 使用identity的主键生成器策略 -->
<generator class="identity"/>
</id>
<!-- 以下映射两个基本属性 -->
<property name="name" length="80"/>
<property name="gender"/>
<!-- 使用union-subclass元素映射Person类的Employee子类 -->
<union-subclass name="Employee" table="Employee">
<!-- 映射Employee类的两个普通属性 -->
<property name="title" not-null="true"/>
<property name="salary" not-null="true"/>
<!-- 映射Employee类与Manager类之间的N-1关联 -->
<many-to-one name="manager" column="manager_id"/>
<!-- 映射Employee类与Customer类之间的1-N关联 -->
<set name="customers" inverse="true">
<key column="employee_id"/>
<one-to-many class="Customer"/>
</set>
</union-subclass>
然后你再用hibernate分页就OK啦。
值得注意的是两个红色的地方:
最好class中给出该类的全路径:如cn.rntd.entity.Employee
还有, 在参考文件中为<union-subclass name="Employee">,但是执行是可能会报'表或视图不存在'
所以还是乖乖加上子类对应的table比较好哦:
<union-subclass name="Employee" table="Employee">
分享到:
相关推荐
"hibernate通用分页"就是为了解决这一问题,提供一个方便、易用的分页解决方案。 分页的核心在于如何根据用户请求的数据范围(如页码和每页显示条数)来查询数据库,并返回相应的结果集。在Hibernate中,我们可以...
这样,业务逻辑层(Service层)就可以直接调用DAO的分页方法。 6. **在Controller层处理请求**:在Web层(如Struts或WebWork),控制器接收用户的分页请求,计算出起始索引,然后调用Service层的方法,将结果传递给...
下面是一个简化的示例代码片段,展示了如何在Struts2和Hibernate中实现分页功能: ```java // PageTool类定义 public class PageTool { private int pageNum; // 当前页码 private int pageSize; // 每页显示记录...
3. **编写分页方法**:在Action类中,创建一个方法如`execute()`,在该方法内调用Hibernate的分页查询代码,然后将结果集封装到一个模型对象(如`UserPaginationModel`)中。 4. **配置Struts2的配置文件**:在`...
struts+spring+hibernate通用分页方法.rar 博文链接:https://igogogo9.iteye.com/blog/97692
标题与描述均提到了“Hibernate分页的设计和编码”,这表明文章主要聚焦于如何在Hibernate框架中实现数据分页功能。下面将详细解析这一主题的关键知识点。 ### Hibernate分页概念 Hibernate是Java环境下一个开放源...
在IT领域,分页是一种常见的数据展示方式,特别是在处理大量数据时,为了提高用户体验和页面加载速度,我们会将数据分成多个部分(页)进行显示。本篇将介绍如何使用Struts和Hibernate框架来实现Web应用中的分页功能...
本文将深入探讨如何在Hibernate中进行分页查询的封装,并提供相关的源码和工具使用方法。 首先,我们需要了解Hibernate中的Criteria查询,这是实现分页查询的一种方式。Criteria API允许我们以面向对象的方式构建...
7. **文件`struts+spring+hibernate通用分页方法.doc`**:这个文档可能包含了具体的实现步骤、代码示例和注意事项,详细阐述如何将Struts、Spring和Hibernate整合起来,构建一个通用的分页功能。读者可以参考文档中...
综上所述,通过Struts处理用户请求,Spring管理组件和事务,以及Hibernate处理数据库操作,我们可以构建出一个高效、可扩展的分页应用。在这个过程中,Eclipse作为开发环境,提供对Spring和Hibernate的支持,帮助...
- 首先需要创建一个`Session`对象,这是Hibernate的核心对象之一,用于执行所有的持久化操作。 2. **创建Criteria对象**: - 通过`Session`对象的`createCriteria`方法创建一个`Criteria`对象,并指定要查询的实体...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在大型项目中,由于业务需求复杂,我们常常会使用到类的继承来组织代码结构,而Hibernate提供了对...
hibernate_mysql_struts2 实现的通用分页类.欢迎指正
综上所述,SSH分页是Java企业级开发中的一个重要技术,它涉及到了Struts的控制层、Hibernate的数据访问层和Spring的整合及服务层,是提升应用性能和用户体验的关键手段之一。通过熟练掌握SSH分页,开发者可以更高效...
根据提供的标题、描述以及部分内文,我们可以梳理出...通过以上步骤,我们就可以在一个Java Web应用程序中实现Struts2与Hibernate结合的分页功能。这种方法不仅提高了开发效率,而且使得代码更加简洁、易读和易于维护。
java+hibernate实现分页 public String execute() throws Exception { System.out.println("Page:" + page); pagePlanList = ps.findPlantByPage(page, rowsPerPage); totalPage = ps.getPlanTotalPage...
Hibernate分页查询小结
"hibernate 通用分页"是Hibernate框架中一个重要的实用功能,主要用于处理大数据量的查询场景,避免一次性加载过多数据导致内存压力。在这个组件中,`Pagehelp.java`、`Page.java`和`tag.tld`是实现分页的关键文件。...
Hibernate作为Java领域内一个优秀的对象关系映射(ORM)框架,提供了强大的数据持久化服务,并且内置了分页查询的功能。本文将详细介绍如何利用Hibernate来实现分页查询。 #### 二、分页查询的基本原理 分页查询的...
【Struts2+Hibernate实现分页详解】 在Java Web开发中,Struts2和Hibernate是两个非常重要的框架,它们分别负责MVC模式中的控制层和持久层。Struts2提供了强大的Action类和拦截器,使得业务逻辑处理更加简洁;而...