`
rain16881
  • 浏览: 46709 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

hibernate高级查询N表多对多问题

阅读更多
有一用户表.
user :id , userName , password......
有一分组表.
role: id , roleName, ....
有一功能表.
function: id, functionName.. ..

他们是多对多关系.
有两个表做外键
表一
userrelationrole: userid, roleid 放用户权限的多对多映射

表二
permission : roleid,functionid 用于放权限和功能的多对多映射

在hibernate 中是用set,bag来做双向的多对多的..事关..list是不可以做双向的

hibernate代码片段:
<set name="users" table="userrelationrole" lazy="false" inverse="true" cascade="save-update" order-by="userId asc">
            <cache usage="read-write"/>
            <key column="roleId" />
            <many-to-many class="org.ylcompany.rain.hibernate.User" column="userId" outer-join="auto" />
        </set>

        <set name="functions" table="permission" lazy="false"  cascade="save-update" order-by="functionId">
        <cache usage="read-write"/>
            <key column="roleId" />
            <many-to-many class="org.ylcompany.rain.hibernate.Function" column="functionId" />
        </set>
hibernate代码片段
这个是role中的hibernate片段
假如当我和道一个userid的时候,我要得到这个用户的功能的时候,
就要
User user = (User)basedao.loadByKey(org.ylcompany.rain.hibernate.User.class,"userName",this.userName);
Set _roles = user.getRoles();
Iterator _it = _roles.iterator();
while(_it.hasNext() ){
Role role = (Role)_it.next();
Set _functions = role.getFunctions();
Function _function = new Function();
Iterator __it = _functions.iterator();
while(__it.hasNext() ){}}
要这样子去迭代..
都要这样子麻烦的去查找功能的吗..这个就是在hibernate中的级联查询吗?

有没方法,当知道userid时,当得到全部的function对象呢.?

还有就是.在hibernate中..的高级查询.用Restrictions来做日期的范围查询是可以..

有没方法直接去得到某月的记录呢..

这个当然我的记录中是有记录的日期时间的.

我对hibernate的高级查询,N表多表多关联不是太懂..请网友们帮手..回复一下.
分享到:
评论

相关推荐

    hiber开发指南 hibernate高级特性

    Hibernate支持多种关系映射,包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)、多对多(ManyToMany)。通过配置外键、联合主键、映射集合等方式,可以灵活地处理各种复杂关系。 10. **自定义...

    Hibernate的高级操作

    4. **查询优化**:避免N+1查询问题,合理使用JOIN和子查询。 综上所述,Hibernate的高级操作涵盖了各种查询方式、关联管理、事务处理、缓存机制等多个方面,熟练掌握这些技巧将极大地提升开发效率和应用性能。通过...

    Hibernate的N对N的关系映射

    通过本文的学习,读者应该能够掌握在Hibernate项目中如何正确地处理多对多关系的映射问题。需要注意的是,本文仅覆盖了Hibernate中多对多关系映射的基本用法,对于更高级的功能如懒加载、级联操作等,还需要进一步...

    hibernate教程打包下载,史上最全的HIBERNATE

    4. **实体类与表映射**:学习如何使用Hibernate注解或XML配置文件将Java类映射到数据库表,包括主键生成策略、字段映射、关联映射(一对一、一对多、多对一、多对多)等。 5. **Session与Transaction**:Hibernate...

    Hibernate4.1.11中文手册

    这包括了主键生成策略、属性类型映射、关联关系(一对一、一对多、多对一、多对多)的配置,以及懒加载(Lazy Loading)和级联操作(Cascading)等高级特性。 在事务处理部分,手册会阐述Hibernate的事务管理机制,...

    hibernate in action 中文版书籍

    3. **对象关系映射**:深入讲解Hibernate的核心——对象关系映射(ORM),包括实体类的设计、属性注解、主键生成策略、关联映射(一对一、一对多、多对一、多对多)等,使开发者理解如何将Java对象与数据库表进行...

    Hibernate完整ppt教程

    - 注意避免N+1查询问题,合理设计实体关系。 11. **其他高级特性** - 自动更新/创建数据库结构、级联操作、事件监听器、拦截器等。 通过学习这个“Hibernate完整PPT教程”,你不仅会了解Hibernate的基本概念,还...

    Hibernate5实例程序

    Hibernate支持多种关系映射,如一对一(`@OneToOne`)、一对多(`@OneToMany`)、多对一(`@ManyToOne`)和多对多(`@ManyToMany`)。每种关系映射都有相应的配置方法。 11. **懒加载(Lazy Loading)** 通过`@...

    Hibernate 经典例子全

    理解并合理使用这两种策略能有效避免N+1查询问题,优化性能。 **三、继承关系映射** `hibernate_extends_1`和`hibernate_extends_2`展示了Hibernate如何处理类的继承关系。Hibernate支持单继承和多层继承的映射,...

    数据库与Hibernate教案

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

    Java开源项目Hibernate深度探险

    对于更复杂的关系,例如一对一、一对多、多对一、多对多的关联,Hibernate提供了多种解决方案。例如,`Class1`和`Class2`的一对一双向关联,可以在两个类中都添加对方的引用,并在数据库中通过外键关联两个表的主键...

    Hibernate in action 中文版 完整版 pdf

    3. 关系映射:涵盖了单向和双向关联、一对多、一对一、多对一和多对多的关系映射实现,以及集合的处理,如List、Set、Map等。 4. 高级特性:深入讨论了懒加载、级联操作、缓存机制(一级缓存和二级缓存)、延迟加载...

    Hibernate常用的资料以及面试题

    - 什么是Hibernate的N+1查询问题,如何避免? - 如何在Hibernate中实现多对多关联? 本资料集将围绕这些知识点展开,帮助开发者掌握Hibernate的核心概念和实践技巧,为面试做好充分准备。对于想要深入学习和研究...

    Hibernate说明

    2. 合理设计实体关系,避免N+1查询问题。 3. 懂得何时使用Session和Transaction,避免数据一致性问题。 4. 适当使用二级缓存,但需考虑数据同步和并发控制。 5. 学习和理解HQL,避免过多的SQL直接操作。 总结,...

    Hibernate实战第2版.zip

    2. 数据库映射:详述了Hibernate的XML映射文件(Hibernate Mapping File,hbm.xml)和注解映射方式,如何定义实体属性与数据库字段的对应关系,以及一对多、一对一、多对多等关联关系的处理。 3. Session和...

    hibernate 3.2.2

    3. 避免N+1查询问题:通过预加载关联数据或使用`JOIN`查询减少额外的数据库调用。 九、高级特性 1. 异步操作:通过Hibernate的事件监听器,可以实现异步持久化操作。 2. 移动对象:`DetachedCriteria`允许在不打开...

    Hibernate part 8:一对多关联关系映射

    同时,注意避免N+1查询问题,即在获取父实体时因懒加载引发的大量额外查询,可以通过预加载(eager fetching)或使用JOIN查询来解决。 在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括...

    Hibernate_参考中文版

    - **查询优化**:合理使用索引、避免N+1查询等问题。 - **对象图遍历优化**:利用延迟加载等技术减少不必要的数据加载。 - **缓存策略**:正确配置一级缓存和二级缓存来提升性能。 #### 十一、集成测试 - **单元...

    Hibernate技术手册

    7. **懒加载与立即加载**:探讨Hibernate的懒加载机制,如何避免N+1查询问题,以及何时使用立即加载。 8. **缓存机制**:介绍Hibernate的缓存层次,一级缓存(Session缓存)、二级缓存(SessionFactory缓存)和查询...

    马士兵hibernate学习笔记(原版)

    - 处理1+N问题,避免N+1查询带来的性能瓶颈。 - 区别使用`list()`与`iterate()`方法遍历查询结果集。 - 理解一级缓存、二级缓存与查询缓存的区别及使用场景。 - 事务并发处理的最佳实践。 以上知识点覆盖了从...

Global site tag (gtag.js) - Google Analytics