-
JPA 管理关联关系问题5
问题描述:
双向多对多关系,比如:老师-学生,老师实体为关系持有方(mappedBy属性在学生实体),这样会有一个中间表 比如名称为:teacher_student.
现在因业务需要,做删除动作的时候,只能删除关联关系,并且既可以从老师实体方删除,也能从学生实体方删除.
从老师实体放删除这个jpa可以实现,可是从学生实体方去删除关联关系表怎么实现?
目前一个解决办法就是利用 EntityManager 调用createNativeQuery()执行本地sql直接操作中间表,可是这样的操作方式放在组件里总感觉是那么的"突兀",有没有更好的解决办法,比如:是否可以用jpql语句?
请各位大神不吝赐教!
注: Student 和 Teacher 中多对多彼此都是 Set<T> t = new HashSet<T>();
问题补充:问题描述:
双向多对多关系,比如:老师-学生,老师实体为关系持有方(mappedBy属性在学生实体),这样会有一个中间表 比如名称为:teacher_student.
现在因业务需要,做删除动作的时候,只能删除关联关系,并且既可以从老师实体方删除,也能从学生实体方删除.
从老师实体放删除这个jpa可以实现,可是从学生实体方去删除关联关系表怎么实现?
目前一个解决办法就是利用 EntityManager 调用createNativeQuery()执行本地sql直接操作中间表,可是这样的操作方式放在组件里总感觉是那么的"突兀",有没有更好的解决办法,比如:是否可以用jpql语句?
请各位大神不吝赐教!
注: Student 和 Teacher 中多对多彼此都是 Set<T> t = new HashSet<T>();
问题补充:yuhao_dong 写道你好,你看用触发器 可以不,两张表都加上触发器
没写过触发器,能否详细点2012年3月01日 09:56
2个答案 按时间排序 按投票排序
-
采纳的答案
对于你这个需求,我都建议不要去显式的维护关系了.
简单说下我采用的方案吧。
Teacher 类就放teacher的信息
Student 类中就放student的信息
偷懒的话,自己建张表,TEACHER_STUDENT_RELATION 里面放tid及sid
不过这样的话,就得写sql了。
所以我一般都是建一个TeacherStudentRelation这个实体,里面可以直接存放
tid及sid,可以做个改进,做个TeacherStudentRelationPK类,里面存tid,sid,
并且声明称Embeddable类型的,TeacherStudentRelationPK做成TeacherStudentRelation
的主键,实际上是tid+sid的复合主键。
经过上面的处理,你就可以使用JPQL完全面向对象(实体类)操作了。
ps. 遇到关系复杂的时候,自己处理关系比声明@ManyToMany好多了。
说了这么多,不知道说清楚没。2012年3月01日 14:53
相关推荐
在实际开发中,利用IDEA等集成开发环境的JPA工具支持,可以便捷地创建和管理这些关联关系。例如,使用反向工程(Reverse Engineering)可以从现有数据库生成实体类和映射文件,直观地查看和调整关联关系。此外,...
Java Persistence API (JPA) 是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它提供了一种面向对象的方式来操作数据,而Hibernate是JPA的一个流行实现。在JPA中,实体间的关联映射是核心概念之一,...
Java Persistence API (JPA) 是一种用于管理关系型数据库中的数据的标准 Java 技术。JPA 提供了一种对象关系映射 (ORM) 方法来处理数据库,允许开发者以面向对象的方式操作数据库。本文将详细介绍 JPA 中四种常见的...
**JPA 2 一对多双向关联关系** Java Persistence API(JPA)是Java平台上的一个标准,用于处理对象关系映射(ORM),使得开发者可以使用面向对象的方式操作数据库。在JPA中,一对多关联关系是常见的实体间关系类型...
在Java世界中,Java Persistence API(JPA)是用于对象关系映射(ORM)的一种标准框架,它允许开发者将数据库操作与业务逻辑紧密结合,而无需编写大量的SQL代码。本篇文章将深入探讨如何在JPA中映射关联和实现继承。...
JPA(Java Persistence API)是Java平台上的一个标准,用于管理关系数据库中的数据,简化了对象持久化的流程。在EJB(Enterprise JavaBeans)框架中,JPA被广泛使用,提供了一种面向对象的方式来处理数据库交互。本...
在 JPA 中,实体之间的关联关系非常重要,因为它们描述了实体如何相互作用以及如何存储这些关系。本文将深入探讨 JPA 中的一对一 (One-to-One)、一对多 (One-to-Many)、多对一 (Many-to-One) 和多对多 (Many-to-Many...
在JPA中,**关联关系**是实体之间的一种关系,模仿了数据库中的表间关系。有四种主要的关联类型: 1. **一对一(OneToOne)**: 表示两个实体之间存在唯一的关系,就像一个人只有一个身份证。配置时,可以使用`@...
Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它是ORM(对象关系映射)框架的一种实现,允许开发者使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。JPA通过...
在Java世界中,Java Persistence API (JPA) 是一种用于管理关系数据库的框架,它使得对象-关系映射(ORM)变得更加便捷。JPA通过在Java类上使用特定的注解,将这些类映射到数据库中的表,从而简化了数据库操作。在处理...
- `@OneToMany`, `@ManyToOne`, `@OneToOne`, `@ManyToMany`: 分别表示一对一、一对多、多对一和多对多的关联关系。 **2. 关联映射** 关联映射是JPA处理实体间关系的关键。四种基本的关系类型如下: - **一对一 ...
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...
**JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了ORM(对象关系映射)的过程。在JPA中,多对多(Many-to-Many)关联是一种常见的关系类型,适用于描述两个实体之间...
在Java Persistence API (JPA) 中,一对一双向关联是一种关系映射,它允许两个实体类之间存在一对一的关系,并且每个实体都能引用对方。...在实际项目中,根据需求选择合适的关联类型并正确管理关联是至关重要的。
1. `@Entity`:标记一个类作为JPA的实体类,使得该类可以被JPA管理并映射到数据库表。 2. `@Table`:指定实体类对应的数据库表名。 3. `@Id`:标识实体类中的主键字段。 4. `@ManyToMany`:用于表示多对多关联。 5. ...
**JPA 一对一关联关系源码详解** Java Persistence API (JPA) 是Java平台上的一个标准,用于管理和持久化对象到数据库。它提供了一种面向对象的方式来操作数据库,简化了数据库编程。在JPA中,一对一(OneToOne)...
在Java世界中,Java Persistence API (JPA) 是一种用于管理关系数据库的框架,它提供了对象-关系映射(ORM)的功能,使得开发者可以使用面向对象的方式来操作数据库。本篇文章将深入探讨如何在JPA中实现继承关系,这...
在Java Persistence API (JPA) 中,实体映射关系是数据库关系模型与Java对象模型之间的桥梁,用于在ORM(对象关系映射)框架下管理数据。JPA 提供了多种映射关系,使得开发者能够方便地处理不同类型的关联。下面我们...
本文主要探讨的是JPA中的`@OneToOne`注解,它用于建立两个实体之间的一对一关联关系。在实际开发中,这种关联关系常常出现在需要精确映射一对一实体映射的情况,例如用户与个人信息、车辆与车牌号等。我们将会深入...
在Java世界中,Java Persistence API(JPA)是Oracle公司推出的用于对象关系映射(ORM)的标准框架,它使得开发者可以使用面向对象的方式来操作数据库。本篇将详细讲解JPA中的一个关键概念——多对多双向关联,并...