HQL实现多对多关联查询(无关系表的映射)

目录:

  1. 应用场景
  2. 演示

[一]、应用场景

在用注解的方式(@ManyToMany @JoinTable)实现多对多映射时,并没有具体的多对多关系表的实体类,那么我们如何利用HQL实现关联查询呢?比如:学生和课程表之间的多对多关系。

[二]、演示

1.实体类

IdEntity.java

学生实体类:Student.java

课程实体类:Course.java

2.初始化数据:

利用dbunit初始化演示数据:

3.演示关联查询

在Student中配置了多对多关系,在Course没有配置多对多关系,下面将分别演示关联查询这两个实体的方法:

测试基础类 HibernateBaseTest.java

测试HQL查询:ManyToManyTest.java

执行结果:单元测试通过,运行日志如下:

Hibernate:

select

student0_.ID as ID1_,

student0_.birthday as birthday1_,

student0_.name as name1_

from

DEMO_T_STUDENT student0_

inner join

DEMO_R_S2C courses1_

on student0_.ID=courses1_.SID

inner join

DEMO_T_COURSE course2_

on courses1_.CID=course2_.ID

where

(

student0_.name like ‘%micmiu.com%’

)

and course2_.name=’math’

———– size:1

Student [name=micmiu.com, birthday=2012-12-12 00:00:00.0]

Hibernate:

select

distinct course1_.ID as ID0_,

course1_.name as name0_

from

DEMO_T_STUDENT student0_ cross

join

DEMO_T_COURSE course1_

where

(

course1_.ID in (

select

courses2_.CID

from

DEMO_R_S2C courses2_

where

student0_.ID=courses2_.SID

)

)

and (

student0_.name like ‘%micmiu.com%’

)

and course1_.name=’math’

———– size:1

Course [name=math]

本文介绍到此结束@Michael Sun.

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/j2ee/hibernate/hql-manytomany-query/

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">