- 浏览: 543236 次
- 性别:
- 来自: 湖南娄底
文章分类
- 全部博客 (252)
- C#资料 (0)
- java资料 (22)
- 数据库资料 (0)
- Java :开发中遇到的问题 (4)
- 书写属于我的人生 (6)
- spring (6)
- hibernate (16)
- struts (17)
- SSH (5)
- Linux操作系统 (1)
- Ext (5)
- Jquery (9)
- Tomcat部署出错 (2)
- xml (5)
- JSON (5)
- javascript 专题 (5)
- 开发环境配置 (2)
- web 开发 (27)
- Eclipse (7)
- Integration (1)
- 解决方案搜罗 (7)
- 网站收藏 (8)
- 测试框架 (1)
- iframe 专题 (6)
- JSTL (2)
- 各种插件收集 (2)
- 权限设计模型探讨 (1)
- DWR (1)
- log4j (3)
- java (11)
- java 格式化 (1)
- 软件工程 (2)
- 乱码专题 (1)
- UML (4)
- java 设计模式 篇 (1)
- 用法收集 (0)
- sourceforge apache solutions (2)
- Struts2 + JPA + Spring 开发 (1)
- 自定义工具箱 (0)
- IDE (4)
- opencms (1)
- jeecms (1)
- ant (0)
- maven (2)
- 数据库连接池 (0)
- spring MVC (0)
- android (1)
- web-server (1)
- iphone-开发环境 (1)
- iphone-软件开发 (6)
- iPhone-软件设计 (1)
- iphone-应用 (3)
- iPhone-设置 (2)
- iphone-软件开发-设计模式篇 (0)
- iphone-软件开发-OC基础 (9)
- iphone-软件开发- UI篇 (9)
- iphone-软件开发-工具类篇 (1)
- iphone-软件开发-第三方篇 (0)
- iphone-软件开发-特效篇 (2)
- iphone-软件开发-动画篇 (1)
- oracle (1)
- Java-Security (0)
- Three20 UI (1)
- IOS-HOW-TO-专题 (1)
- Mark-Develope Issues (1)
- iphone-软件开发- 资料参考篇 (1)
- C 语言-基本语法 (0)
- Java Servlet (2)
- Eclipse optimization (1)
- IOS Basic (0)
- ecl (0)
- FRONT-HTML (0)
- FRONT-JS (0)
- PHP (0)
最新评论
-
qq_29862421:
[[color=brown]color=yellow][url ...
java 上传图片同时获得图片的宽和高 -
hhb19900618:
NSString <==> NSNumber 之前 ...
OC 常用数据类型之间的转换 -
baohuan_love:
果然能解决问题,感谢分享
Tomcat Error Page配置 与 Error Page在IE下不能转发的问题 -
唐丽梅6313:
很细致。。
键盘样式风格有关设置-iOS开发 -
olived:
哥哥,为什么我的没有破解成功,总是提示许可文件丢失!!QQ:3 ...
[软件测试解决方案] soapUI 4.0.1破解方法
轉載,收藏一下!
http://terrencemail.javaeye.com/blog/197821
hibernate
存在如下表及关联:
- class House{
- private string houseid;
- private string housename;
- }
- class Shelf{
- private string shelfid;
- private House house;
- }
- class Position{
- private string positionid;
- private Shelf shelf;
- }
- class Warehouse{
- private string warehouseid;
- private Position position;
- }
class House{ private string houseid; private string housename; } class Shelf{ private string shelfid; private House house; } class Position{ private string positionid; private Shelf shelf; } class Warehouse{ private string warehouseid; private Position position; }
Warehouse外键关联Pisition, Position外键关联Shelf, Shelf外键关联houseid。
现在要对Warehouse使用Criteria查询, 查询House的id,可使用如下方法:
- Criteria criteria = BaseUtil.getCriteria(Warehouse. class );
- criteria.createAlias( "position" , "position" );
- criteria.createAlias( "position.shelf" , "shelf" );
- criteria.add(expression_r.eq( "shelf.house.houseid" , "111" ));
Criteria criteria = BaseUtil.getCriteria(Warehouse.class); criteria.createAlias("position", "position"); criteria.createAlias("position.shelf", "shelf"); criteria.add(expression_r.eq("shelf.house.houseid", "111"));
如果要查询House的name, 必须再关联House表:
- Criteria criteria = BaseUtil.getCriteria(Warehouse. class );
- criteria.createAlias( "position" , "position" );
- criteria.createAlias( "position.shelf" , "shelf" );
- criteria.createAlias( "shelf.house" , "house" );
- criteria.add(expression_r.eq( "house.housename" , "name A" ));
Criteria criteria = BaseUtil.getCriteria(Warehouse.class); criteria.createAlias("position", "position"); criteria.createAlias("position.shelf", "shelf"); criteria.createAlias("shelf.house", "house"); criteria.add(expression_r.eq("house.housename", "name A"));
以上代码就可以实现了。
可是还会出现一个问题:如果表路径position已经被关联过了(比如此criteria是传入的参数,已经关联了Alias路径position,
并查询过了),则会报错。解决方法:
检查criteria里面关联的路径,如果已经关联,则不再关联,直接使用就行了。
- class CriteriaUtil{
- public static Criteria addAlias(CriteriaImpl criteriaImpl, String path, String name){
- if (path == null ) return criteriaImpl;
- for (Iterator iter = criteriaImpl.iterateSubcriteria();iter.hasNext();){
- Subcriteria subCriteria = (Subcriteria)iter.next();
- if (path.equals(subCriteria.getPath()))
- return criteriaImpl;
- }
- return criteriaImpl.createAlias(path, name);
- }
- }
class CriteriaUtil{ public static Criteria addAlias(CriteriaImpl criteriaImpl, String path, String name){ if(path == null) return criteriaImpl; for(Iterator iter = criteriaImpl.iterateSubcriteria();iter.hasNext();){ Subcriteria subCriteria = (Subcriteria)iter.next(); if(path.equals(subCriteria.getPath()))
(注:这段代码有时是存在问题的,不是所有的Criteria
都能转换为CriteriaImpl,可能会是Subcriteria。因此,需要确保传入的参数为CriteriaImpl)
调用代码就变成:
- Criteria criteria = BaseUtil.getCriteria(Warehouse. class );
- CriteriaUtil.addAlias((CriteriaImpl)criteria, "position" , "position" );
- CriteriaUtil.addAlias((CriteriaImpl)criteria, "position.shelf" , "shelf" );
-
criteria.add(expression_r.eq(
"shelf.house.houseid"
,
"111"
));
发表评论
-
detached entity passed to persist异常解决
2012-04-21 15:48 0病理特征:Caused by: org.hibernat ... -
hibernate中inverse作用
2012-04-07 20:52 0inverse常用于一对多双向关联关系中。 以Student ... -
hibernate Restrictions用法
2012-04-07 19:31 0方法 说明 Restricti ... -
QBC Hibernate 多表查询
2012-04-07 19:30 01.java 实体对象 Java代码 ... -
Hibernate继承映射-多态关联
2012-04-07 19:24 0把类之间的继承关系反 ... -
hibernate - 10.12. 使用元数据
2012-04-07 11:32 948Hibernate中有一个非常丰富的元级别(meta-leve ... -
Hibernate <property>配置
2012-04-07 10:34 1308<property name="name&qu ... -
Hibernate Tool: hbm2java or hbm2ddl
2012-04-01 18:30 1424Hibernate为了简化开发,给我们提供了四种工 具 ... -
Hibernate锁机制 悲观锁和乐观锁
2012-04-01 18:21 11381、Pessimistic Locking 悲观锁 ... -
hibernate一级缓存和二级缓存的区别
2012-04-01 17:09 761缓存是介于应用程序 ... -
Hibernate的Fetch
2012-03-17 22:55 019.1. 抓取策略(Fetching strategies ... -
hibernate 使用二级缓存
2012-03-15 22:04 0二级缓存: 二级缓存也称进程级的缓存或SessionF ... -
hibernate Isolation Level(事务隔离等级)
2011-12-25 14:33 1560hibernate Isolation Level(事务隔离等 ... -
hibernate hql函数
2011-12-20 20:07 4462√通过 ⊙测试没结果 ... -
openSession() 与 getCurrentSession()
2011-09-17 18:04 10051 getCurrentSession创建的session会和 ... -
使用ThreadLocal实现事务的管理
2011-01-18 19:45 2395在HibernateSessionFactory类中,我们可以 ... -
criteria进行分页查询
2010-11-10 01:33 1553public List findStockBySt ... -
hibernate HQL 模糊查询 3种方式
2010-11-10 01:01 1156hibernate HQL 模糊查询 3种方式 以下是 ... -
hibernate从数据库中读取出来的数据乱码的问题分析!
2010-10-19 22:26 3186最近在部署一个开源项目时,发现从数据库中读取出来的数据都乱码了 ... -
Hibernate常见问题集锦(2)
2010-10-17 22:17 9871。问题: 异常原因: 2010/10/17-22: ...
相关推荐
本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...
本文将深入探讨“Hibernate自身关联一对多实例(树形结构)”这一主题,这在构建具有层次结构的数据模型时尤其常见,例如组织结构、地区树或者商品分类等。 首先,我们需要理解Hibernate的核心概念。Hibernate允许...
14. **多态性支持**:在查询时,Hibernate可以处理不同类层次结构下的对象,提供了一种强大的多态性支持。 通过学习Hibernate 5.2.9的源码,可以深入了解其内部实现,包括查询解析、结果集转换、缓存策略等细节,有...
`Query`接口允许使用HQL(Hibernate Query Language)或SQL进行查询,而`Criteria`API则提供了一种基于标准的查询方式,无需了解具体的SQL语法。对于数据的更新和删除,Hibernate同样提供了简单的方法,只需调用对应...
13. **关联映射**: Hibernate支持一对一、一对多、多对一和多对多的关联映射,允许对象之间建立复杂的关联关系。 14. **事件监听器**: Hibernate允许注册事件监听器,监听对象的生命周期事件,如加载、保存、更新和...
- **关联映射**:Hibernate支持一对一、一对多和多对多等多种关联映射类型,能够灵活地处理复杂的数据关系。 - **继承映射**:对于具有层次结构的对象模型,Hibernate提供了策略来处理继承关系,包括单表继承、分类...
7. **关联映射**:详细解析一对一、一对多、多对一、多对多的各种关联映射,包括集合类型如List、Set、Map的使用。 8. **延迟加载和立即加载**:了解何时使用延迟加载和立即加载,以及它们对性能的影响。 9. **...
10. **继承映射**:Hibernate允许实体类之间进行单表继承、联合继承和多表继承,以适应不同层次的类结构。 11. **延迟加载(Lazy Loading)**:为提高性能,Hibernate提供了延迟加载机制,只有当真正需要访问关联...
Hibernate 提供了自己的查询语言 HQL,类似于 SQL 但面向对象,还提供了 Criteria API 作为另一种动态查询方式。 ### 6. 事务管理 介绍了 Hibernate 如何集成 Spring 或其他框架进行事务处理,包括编程式事务和...
8. **多态性支持**:Hibernate支持单继承和多继承的映射,可以处理不同类型的对象,这在处理具有层次结构的数据时非常有用。 9. **事件监听器**:Hibernate提供了一套事件监听系统,开发者可以通过实现特定接口或...
7. **Criteria查询**:除了标准的SQL查询外,Hibernate还提供了Criteria API,允许以面向对象的方式构建查询,避免了字符串拼接SQL的错误风险。 8. **HQL(Hibernate Query Language)**:HQL是Hibernate的专用查询...
10. **多态性支持**:Hibernate支持多态查询,允许在查询中使用继承层次结构中的任何类,使得代码更具扩展性。 11. **延迟加载(Lazy Loading)**:为了提高性能,Hibernate允许关联对象的延迟加载,只有当真正需要...
Hibernate 支持类的继承映射,可以将继承层次结构映射到数据库的单表或多表。具体有三种策略:单表继承(Single Table Inheritance)、联合继承( Joined Table Inheritance)和表-per-class-hierarchy(Table per ...
5. **CRUD操作**:通过实例展示如何使用Hibernate进行增删查改(Create, Read, Update, Delete)操作,包括对象状态管理、HQL(Hibernate Query Language)查询和Criteria API的使用。 6. **关联映射**:深入探讨一...
9. **多态性支持**:Hibernate允许在查询时处理不同继承层次的对象,提供了对多态查询的良好支持。 10. **级联操作(Cascading)**:级联操作允许在一个对象的操作中自动处理相关对象,如删除一个实体时,可以选择...
5. **查询语言HQL**:解释Hibernate查询语言,与SQL的关系,如何编写HQL查询,以及使用Criteria API进行复杂查询。 6. **关联映射**:讲解一对一、一对多、多对一、多对多的关联映射配置,如@OneToOne、@OneToMany...
Hibernate是一个强大的Java对象关系映射(ORM)框架,它消除了传统SQL编程的繁琐,提供了更高层次的抽象,使我们能够用面向对象的方式处理数据。 1. **SessionFactory接口**: SessionFactory是Hibernate的核心组件...
同时,我们可以利用Hibernate的Criteria API或HQL(Hibernate Query Language)来编写高效的查询,以获取特定层次或路径的节点。 5. **缓存策略**:对于大型树结构,缓存策略的设置至关重要。Hibernate提供了第一级...
9. **Association Mapping**:Hibernate支持多种关联映射,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany),使对象间的关联关系能够映射到数据库表的外键关系。 10. **...