在一个测试项目中,用到了Hibernate中的多对多关系(假如是A和B),不是怎么好处理,特别是查询集合的时候有点郁闷,之前的做法都是先找到一个对象(A),在从这个对象上找到它的集合(A.bSet)。利用jpa的注解方式,偶尔会出现延迟加载的问题。在网上搜了一下,发现有个比较好的方法,可以通过hql语句操作找到bSet。
例如:
public class Client {
//other属性
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST,
CascadeType.MERGE })
@JoinTable(name = "device_client")
public Set<Device> devices;
}
public class Device{
private Long id;
//other属性
@ManyToMany(mappedBy = "devices")
public Set<Client> clients;
}
要取得一个client对象的devices集合对象,可以在DAO层执行一条HQL语句,此时的操作是对对象而言的:
FROM Device d WHERE d IN ( select elements(c.devices) FROM Client c WHERE c.id=:clientId
即可得到一个根据clientId在第三个关系表中获取的集合。仅此记录只用。
分享到:
相关推荐
DAO层中对Hiberante实例,大家交流一下
hiberante查询方式使用详解,有hql,sql,qbc,以及存储过程,hiberante的基础查询
hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档
Hiberante3.jar + API
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。...通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
Hibernate Tools是一套全新而且完整的面向Hibernate3的工具集合,它包含了Eclipse插件和Ant编译流程。Hibernate Tools是JBoss Tools的核心组件,所以他也是JBoss Developer Studio的一部分
hibernate 源码 和hibernate配置的html文档。。非常全面的介绍了hibernate配置。分别在src和zh-cn文件中
最新springboot2基础hiberante5完整项目,打包jar,运行jsp,包括后台与前台,拦截器,登录,后台下载就可以使用,注意不是jpa,里面有完整Dao,千万级数据项目分离的代码,为了适合老项目开发特意集成hiberante5....
spring整合
Hiberante HTML 帮助文档 Hiberante HTML 帮助文档 Hiberante HTML 帮助文档
开发工具:MyEclipse 6....Struts+Spring+Hiberante框架整合的简单登录系统 无需配置任何文件、只需在mysql中创建一个空数据库 如:create database test; 注:mysql数据库用户名:root 密码:root
hibernate5.0.7jar包,主要是jar包,方便大家下载使用。主要是jar包,方便大家下载使用。主要是jar包,方便大家下载使用
Struts2+hiberante+Spring+Extjs+OA办公系统,完整包正常运行
hiberante4.2.3-part01
hiberante4.2.3-part2
hiberante annotations reference_cn
我见过最详细的hibernate帮助文档
spring4+hiberante4+struts2+maven最新框架
Hiberante3_HQL,Hibernate3_缓存机制,Hibernate3_数据加载
添加各种项目需要的配置:文件上传 国际化等等 拦截器 日志记录等