- 浏览: 1499807 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
inner join fetch
/**
* 一对多中的一方inner join fetch多方
* 这里不能用inner join on
* 查询结果是它把一方对多方的那个集合里面的对象都查询出来放到一方的集合中
*/
public List getallByinnerjoinTShop(){
List list=null;
try {
Query query=this.GetSession().createQuery("from TType as t inner join fetch t.TShops");
list=query.list();
} catch (HibernateException e) {
throw e;
}finally{
this.ColseSession();
}
return list;
}
测试:
List list=typedao.getallByinnerjoinTShop();
Iterator iter=list.iterator();
while(iter.hasNext()){
TType type=(TType) iter.next();
System.out.println(type.toString());
Iterator<TShop> it=type.getTShops().iterator();
while(it.hasNext()){
TShop sh=it.next();
System.out.println(sh.toString());
}
}
left join fetch
/**
* left join fetch 左外连接
*/
public List getallLeftjoinfetchTShop(){
List list=null;
try {
Query query=this.GetSession().createQuery("from TType as t left join fetch t.TShops");
list=query.list();
} catch (HibernateException e) {
throw e;
}finally{
this.ColseSession();
}
return list;
}
测试:
List list=typedao.getallLeftjoinfetchTShop();
Iterator iter=list.iterator();
while(iter.hasNext()){
TType type=(TType) iter.next();
System.out.println(type.toString());
Iterator<TShop> it=type.getTShops().iterator();
while(it.hasNext()){
TShop sh=it.next();
System.out.println(sh.toString());
}
}
left join
/**
* left join 左外连接
*
*/
public List getallLeftjoinTShop(){
List list=null;
try {
Query query=this.GetSession().createQuery("from TType as t left join t.TShops");
list=query.list();
} catch (HibernateException e) {
throw e;
}finally{
this.ColseSession();
}
return list;
}
测试:
List list=typedao.getallLeftjoinTShop();
Iterator iter=list.iterator();
while(iter.hasNext()){
Object[] obj=(Object[]) iter.next();
TType type=(TType) obj[0];
TShop shop=(TShop) obj[1];
System.out.println(type.toString());
//访问type对象里面的TShops集合里的元素,有懒加载问题
//Iterator<TShop> it=type.getTShops().iterator();
//while(it.hasNext()){
//TShop sh=it.next();
//System.out.println(sh.toString());
//}
//from TType as t left join t.TShops shop可能为空
if(shop!=null){
System.out.println(shop.toString());
}
}
隐式内连接
/**
* 隐式内连接
*/
public List getall(){
List list=null;
try {
Query query=this.GetSession().createQuery("from TType as t,TShop as s where s.TType=t");
list=query.list();
} catch (HibernateException e) {
throw e;
}finally{
this.ColseSession();
}
return list;
}
测试:
List list=typedao.getall();
Iterator iter=list.iterator();
while(iter.hasNext()){
Object[] obj=(Object[]) iter.next();
TType type=(TType) obj[0];
TShop shop=(TShop) obj[1];
System.out.println(type);
System.out.println(shop);
}
集合过滤
/**
* 集合过滤
*/
public List getallfilter(int price){
List list=null;
try {
Query query=this.GetSession().createQuery("from TType");
list=query.list();
Iterator iter=list.iterator();
while(iter.hasNext()){
TType type=(TType) iter.next();
Query que=this.GetSession().createFilter(type.getTShops(), "where SPrice>=?");
que.setInteger(0, price);
List arr=que.list();
type.setTShops(new HashSet(arr));
}
} catch (HibernateException e) {
throw e;
}finally{
this.ColseSession();
}
return list;
}
测试:
List list=typedao.getallfilter(10);
Iterator iter=list.iterator();
while(iter.hasNext()){
TType type=(TType) iter.next();
System.out.println(type.toString());
Iterator<TShop> it=type.getTShops().iterator();
while(it.hasNext()){
TShop sh=it.next();
System.out.println(sh.toString());
}
}
发表评论
-
自定义用户类(UserType)的使用
2011-08-04 10:46 1854学习hibernate有段时间了,最近复习这门技术时看到了自定 ... -
技巧:利于ThreadLocal模式管理Session
2011-08-02 10:31 1263在利用Hibernate开发DAO模块时,我们和Session ... -
Hibernate中的回调与拦截机制
2011-07-27 17:31 1459在某些情况下,我们需要对实体的CURD操作进行捕获并执行一些操 ... -
HibernateTemplate中HibernateCallback的事务
2011-07-04 14:41 1439目的:使用HibernateTemplate执行execute ... -
Hibernate的复杂用法HibernateCallback
2011-07-04 14:40 1335HibernateTemplate还提供一种更加灵活的方式来操 ... -
Hibernate session FlushMode有五种属性
2011-07-04 13:59 17281、NEVER:已经废弃了,被MANUAL取代了2 MANUA ... -
数据库持久层——浅谈hibernate中的Session
2011-07-01 22:49 1665大多数情况下,Session 管理的目标聚焦于通过合理的设 ... -
详解Hibernate Session
2011-07-01 22:42 1488这里介绍Hibernate Session,Ses ... -
HttpSession与Hibernate中Session的区别
2011-07-01 22:41 1288一、javax.servlet.http.HttpSess ... -
巧用SQLQuery中的addScalar
2011-06-02 17:16 5741当我们用HQL进行子查询的时候,如select * from ... -
hibernate中SQLQuery的addEntity();方法
2011-04-13 14:48 2888如果使用原生sql语句进行query查询时,hibernate ... -
Hibernate的clear(),flush(),evict()方法详解
2011-03-24 11:18 17691.Clear 方法 无论是Load 还是 G ... -
hibernate模糊查询-Restrictions.ilike & Expression.like
2011-03-11 10:32 16352Criteria criteria = session.c ... -
Hibernate分页查询小结
2011-03-10 11:14 1825通常使用的Hibernate通常是三种:hql查询,QBC查询 ... -
current_session_context_class
2011-03-07 15:31 1292此设置的作用如下: What does sessionFac ... -
Hibernate的拦截器和监听器
2010-12-14 15:06 1384核心提示:最近项目需要,用到了Hibernate的拦截器和 ... -
孙卫琴.精通Hibernate:Java对象持久化技术详解_触发器使缓存与数据库不一致
2010-12-14 08:46 1383p198 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_优化报表查询的性能
2010-12-13 17:51 1268p332 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_查询结果类型
2010-12-13 17:34 1300p329 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_投影查询
2010-12-13 17:31 1421p325
相关推荐
例如,在上面的代码片段中,通过`left outer join fetch parent.childs`语句,我们告诉Hibernate在加载`Parent`实体时,也一并加载所有相关的`Child`实体。这样,即使`Parent`实体的`childs`属性被标记为`lazy="true...
HQL Hibernate 查询语言 HQL(Hibernate Query Language)是 Hibernate 中的一种强大的查询语言,它看起来很像 SQL,但是不要被...例如:from Cat as cat inner join fetch cat.mate left join fetch cat.kittens。
NHibernate Linq内部加入获取提供商 这个简单的库旨在为NHibernate提供支持,以执行内部联接渴望获取。 启用内部联接 致电 NHibernateInnerJoinSupport.Enable() 必须在NHibernate初始化之前的任何时间执行 ...
from Cat as cat inner join fetch cat.mate left join fetch cat.kittens 这个语句将Cat类的实例与其mate和kittens之间的关系进行关联和连接,并将相关联的对象随着父对象的初始化而被初始化。 需要注意的是,...
HQL支持四种类型的连接:inner join(内连接)、left outer join(左外连接)、right outer join(右外连接)和full join(全连接)。简写形式如`join`和`left join`也是允许的。`fetch`连接用于一次性初始化相关联...
hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法 Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法是 Hibernate 框架中的一种常见问题。当我们在 Hibernate 中使用懒加载特性时,可能会遇到 ...
例如,`from Cat as cat inner join fetch cat.mate left join fetch cat.kittens`。 - 使用 `fetch all properties` 可以强制Hibernate立即加载那些默认情况下需要延迟加载的属性,从而提高第一次查询时的数据完整...
连接类型包括:`inner join`(内连接)、`left outer join`(左外连接)、`right outer join`(右外连接)和`full join`(全连接)。`join`的简写形式如`from Cat as cat join cat.kittens as kitten`,简化了查询...
4. **JOIN与ASSOCIATION**:HQL支持INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN和FULL JOIN四种连接类型。通过JOIN关键字,HQL能够处理实体间的关联,从而实现对关联实体的查询。例如,“JOIN cat.mate as mate...
`join` 关键字支持不同类型的连接,包括 `inner join`(内连接)、`left outer join`(左外连接)、`right outer join`(右外连接)和 `full join`(全连接)。简写形式如 `join` 和 `left join` 也常被使用。此外,...
- 示例:`from Cat as cat join fetch cat.mate left join fetch cat.kittens`。 - **限制**:`fetch`连接不能在使用`scroll()`或`iterate()`方法的查询中使用;也不能使用`full join fetch`或`right join fetch`。...
INNER JOIN FETCH cat.mate; ``` 使用 FETCH 可以提高查询效率,避免多次查询数据库加载关联对象。注意,FETCH 通常与 ITERATE 方法结合使用,而不是 SCROLL 或其他方法,因为 SCROLL 等方法可能不支持懒加载。 ...
HQL支持多种类型的连接,如内连接(inner join)、左外连接(left outer join)、右外连接(right outer join)和全连接(full join)。例如: ```sql from Cat as cat inner join cat.mate as mate left outer join...
from Cat as cat inner join fetch cat.mate ``` 这将返回 Cat 类的实例和它的 mate 关联对象,并将相关联的对象初始化。 select 子句 select 子句选择将哪些对象与属性返回到查询结果集中,例如: ``` select cat...
例如,`from Cat as cat inner join fetch cat.mate left join fetch cat.kittens`。需要注意的是,`fetch`连接不适用于`iterate()`查询,且不应与`setMaxResults()`或`setFirstResult()`一起使用。 总的来说,HQL...
其中,`INNER JOIN`、`LEFT OUTER JOIN`和`RIGHT OUTER JOIN`可以简化为: ``` FROM Cat AS cat JOIN cat.mate AS mate LEFT JOIN cat.kittens AS kitten ``` 此外,`FETCH`连接允许在一个选择语句中同时初始化父...
Hibernate支持多种连接类型,包括`inner join`(内连接)、`left outer join`(左外连接)、`right outer join`(右外连接)和`full join`(全连接)。`with`关键字用于提供额外的连接条件,类似于SQL中的`on`关键字...
例如`from Cat as cat inner join fetch cat.mate`。 - **Fetch连接注意事项**:`fetch`连接一般不需要为关联对象指定别名,因为这些关联对象不会直接出现在查询结果中,而是通过它们的父对象来访问。此外,在使用`...
from Cat as cat inner join fetch cat.mate left join fetch cat.kittens ``` 这将在查询时初始化关联的伴侣猫和幼猫集合。请注意,`fetch`连接通常不用于`where`子句,也不直接返回结果集,而是通过父对象访问。...
这表示,将`Cat`实体与`mate`和`kittens`关联的实体进行连接,其中`INNER JOIN`确保只有当关联实体存在时才返回`Cat`实体,而`LEFT OUTER JOIN`则保证即使没有关联实体,`Cat`实体也会被返回。 ##### 4. FETCH子句 ...