`
kobe学java
  • 浏览: 258523 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Hibernate many-to-many 查询写法

 
阅读更多

« TTServer Java 客户端 Tyrond用 HttpServletResponseWrapper 实现 Etag 过滤器 »

Hibernate many-to-many 查询写法

发表于:2009年7月18日 | 分类:groovy & grails | 标签: grailshibernatehqlmany-to-manyquery | views(1,217)

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原文出处, 即下面的声明.

 

原文出处:http://blog.chenlb.com/2009/07/hibernate-many-to-many-query-style.html

玩 Grails 的时候,遇到一个问题,卡在 many-to-many 查询上了。之前学 hibernate 不深,所以会卡。

先来看下例子:两个实体类 Blog、Tag,它们是多对多关系。

例如要查找 tag 为 j2ee 的所有博客文章。

1、用 HQL

  1. //记录数  
  2. def blogNum = Blog.executeQuery("select count(bs) from Blog as bs left join bs.tags as t where t.name=:tname",[tname:params.tag])  
  3. def blogs = Blog.executeQuery("select bs from Blog as bs left join bs.tags as t where t.name=:tname",[tname:params.tag], [max:params.max, offset:params.offset])  

hql 是比 sql 方便,sql 要多写一个 join。但要对 hql 熟悉才行。

2、用 Criteria

  1. //记录数  
  2. def c = Blog.createCriteria()  
  3. def blogNum = c {  
  4.     projections {//记数投影  
  5.         count('id')  
  6.     }  
  7.     tags {//join Tag  
  8.         eq('name', params.tag)  
  9.     }  
  10. }  
  11. //找内容  
  12. def blogC = Blog.createCriteria()  
  13. def blogs = blogC.list {  
  14.     tags {  
  15.         eq('name', params.tag)  
  16.     }  
  17.     firstResult(params.offset)  
  18.     maxResults(params.max)  
  19. }  

看了它们的输出 sql,基本没区别,Criteria 的方式是用 left outer join 的,其实与 left join 一样,用 hql 就可以自己控制 join 吧,还有就是可以节省两个匿名类。还是选择用 hql 方式吧。

可能还有其它方式……

hibernate 3.x 的 hql 中文手册:http://www.redsaga.com/hibernate-ref/3.x/zh-cn/html/queryhql.html

 

 

随机日志 »

相关日志 »

 

分享到:
评论

相关推荐

    hibernate many-to-many级联保存,级联更新,级联删除

    在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据库表之间的关联方式,它表示一个实体可以与多个其他实体进行关联,反之亦然。本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、...

    Hibernate one-to-many / many-to-one关系映射

    "Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    在Hibernate中,可以通过 `<many-to-one>` 或者 `<one-to-many>` 标签中的 `cascade` 属性来指定这种行为。 #### 代码示例解析 在提供的代码示例中,`<many-to-one>` 标签中包含了 `cascade` 属性的注释示例,但是...

    (4)Hibernate中的many-to-one和one-to-many关系

    本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...

    Hibernate Many-To-Many Mapping Annotations

    在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...

    Hibernate many-to-many

    "Hibernate many-to-many"指的是Hibernate中处理多对多关联关系的一种方式。多对多关系是两个实体类之间存在的一种复杂关联,比如学生和课程之间的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 ...

    hibernate jar包:hibernate-commons-annotations-4.0.1.Final.jar等

    hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    在Hibernate中,一对一唯一外键关联映射可以通过 `<many-to-one>` 标签来配置。例如,以下是Person实体与IdCard实体的一对一唯一外键关联映射配置: ```xml <many-to-one name="idCard" column="card_id...

    Hibernate Mapping Many-to-One 实例 内附源代码及附件下载

    对于`Department`,映射文件中会有一个`<class>`标签,其中包含`<set>`标签来定义员工集合,并且使用`<many-to-many>`或`<one-to-many>`标签来映射与`Employee`的关系。对于`Employee`,我们使用`<class>`标签,并在...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    此外,`hibernate-configuration-3.0.dtd`还定义了如何设置JNDI数据源,以及如何启用二进制日志、SQL查询统计等功能。 接下来,我们转向`hibernate-mapping-3.0.dtd`。这个文件定义了Hibernate映射文件的语法规则,...

    Hibernate中many-to-one关系的编写_远航的水手

    Hibernate中many-to-one关系的编写_远航的水手

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    Hibernate中many-to-one关系的编写_远航的水手.htm

    Hibernate中many-to-one关系的编写_远航的水手.htm

    Hibernate应用例子many-to-many

    本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...

    Hibernate实现many-to-many的映射关系

    在本文中,我们将深入探讨如何使用Hibernate来实现多对多(many-to-many)的映射关系。 首先,多对多映射关系通常涉及到两个实体类之间的关联,例如在学生选课的例子中,学生(Student)和课程(Course)之间存在多...

    hibernate学习5之one-to-many双向关联.docx

    而`Classes.hbm.xml`则使用了`<set>`和`<one-to-many>`元素,表示班级对象包含一个学生集合,且每个学生都有对应的`id`。 在处理这种关联关系时,需要注意的是效率问题。由于Hibernate默认会在"一"端更新关联关系,...

    hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605.zip

    《Eclipse中Hibernate插件深度解析》 在Java开发领域,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而Eclipse作为主流的Java集成开发环境,其丰富的插件生态使得开发效率得以提升。...

    HibernateTools-3.2.4

    3. **HQL和SQL查询编辑器**:提供了集成的HQL(Hibernate Query Language)和SQL查询编辑器,支持语法高亮、自动补全,以及对查询结果的可视化展示。 4. **JPA注解工具**:允许将传统的Hibernate映射文件转换为Java...

Global site tag (gtag.js) - Google Analytics