在一个测试项目中,用到了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在第三个关系表中获取的集合。仅此记录只用。
分享到:
相关推荐
标题“Hiberante3相关文档”表明了主要讨论的是关于Hibernate3这一持久化框架的资料集合,可能涵盖了多个方面,如查询语言、缓存机制以及数据加载策略。 描述中的“Hiberante3_HQL”提示我们将会涉及到Hibernate...
Hibernate Tools是一套全新而且完整的面向Hibernate3的工具集合,它包含了Eclipse插件和Ant编译流程。Hibernate Tools是JBoss Tools的核心组件,所以他也是JBoss Developer Studio的一部分
用于指定集合中的顺序,常与`@ElementCollection`一起使用。 ### 总结 以上介绍了一些基本的Hibernate注解,这些注解是进行ORM映射的基础。了解这些注解对于正确地实现持久化逻辑至关重要。值得注意的是,随着...
这是一个强大的框架集合,用于构建高效、可扩展且易于维护的企业级应用程序,特别是针对办公自动化的需求。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了一种组织应用程序...
// 多对一关联,Order属于某个User private User user; // getters and setters } ``` 在配置映射文件或使用注解时,我们需要指定这两个类之间的关联。例如,使用注解的方式: ```java @Entity public class ...
10. **一对多、一对一、多对多关联映射**:Hibernate 3.2 提供了对这些关系映射的完整支持,开发者可以通过注解或XML配置来定义这些关联。 通过深入学习 Hibernate 3.2 的源码,开发者可以更好地理解其内部工作原理...
- **映射Person类**: 继续使用`Person`类作为示例,介绍如何映射一对一、一对多、多对多等各种关联类型。 - **单向Set-based的关联**: 通过集合类型来表达实体间的单向关联关系。 - **使关联工作**: 解释如何配置...
"JDK 6中文文档.CHM"提供了JRE(Java运行环境)和JDK工具的详细信息,包括核心类库、异常、多线程、I/O、网络编程、反射、集合框架、Swing GUI组件、国际化、安全管理以及JVM工具(如javac编译器、javadoc文档生成器...
这个压缩包文件"Struts2 Spring Hibernate IBatis jar (2)"很可能是这些框架的库文件集合,用于支持基于Java的Web应用程序的开发。 首先,让我们逐一解析这四个框架的核心功能: 1. **Struts2**:Struts2是一个...
【标题】"疯狂Ajax讲义+Spring+hibernate" 涵盖了现代Web开发中的几个关键领域,包括Ajax技术、Spring框架以及Hibernate ORM工具。这个资源集合旨在帮助开发者深入理解和掌握这些技术,以便构建高效、动态和交互性强...
6. **级联操作**:如何处理一对多、多对一、多对多的关系,以及它们的级联保存、更新和删除。 7. **延迟加载(Lazy Loading)**:理解何时及如何使用懒加载以提高性能。 8. **缓存机制**:第一级缓存(Session缓存)...
1. `WPFSamples.sln`:这是一个Visual Studio解决方案文件,包含多个项目的集合,可能包括本示例的主程序和相关测试项目。 2. `WpfSchemaExport`:很可能是一个专门处理SchemaExport操作的WPF应用程序,用于演示如何...
- **Hiberante的对象继承关系之--TPC一个类一张表.doc**:讲述Hibernate处理对象继承和多表映射的方法。 - **hibernate 非主键自增.doc**:关于非主键字段如何实现自动增长的策略。 - **Struts和Hibernate之间搭起...
2. **对象关系映射(ORM)**:详细阐述了如何定义实体类(Entity),使用注解或XML文件进行数据表映射,包括主键生成策略、属性映射、关联映射(一对一、一对多、多对一、多对多)等。 3. **Session接口**:作为与...
描述中的“Hibernate开发资料整合”进一步确认了这是一个关于Hibernate的集合,可能是为了帮助开发者系统学习和理解Hibernate的各种概念和技术。这可能包括了Hibernate的核心概念,如实体管理、数据持久化、查询语言...
1. **Hibernate核心库**:`hibernate3.6.6`中的主要jar文件是`hibernate3.jar`,它包含了Hibernate的核心组件,包括实体管理、查询API、事件系统以及缓存机制等。这些组件使得开发者能够通过对象模型与数据库进行...
在这段代码中,我们定义了一个`bulkDelete`方法,接受一个`Object[]`类型的参数`ids`,代表待删除记录的ID集合。`queryString`变量存储了HQL语句,其中`PersistentModel`是待删除数据对应的实体类名,`id in (:ids)`...
Java学习之路是一个全面而深入的探索,尤其对初学者来说,是掌握这门语言的关键所在。Java作为一种广泛应用的编程语言,其重要性不言而喻,不仅在企业级应用开发中占据主导地位,而且在网络服务、移动应用以及大数据...