0 0

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个答案 按时间排序 按投票排序

0 0

采纳的答案

对于你这个需求,我都建议不要去显式的维护关系了.
简单说下我采用的方案吧。

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
0 0

你好,你看用触发器 可以不,两张表都加上触发器

2012年3月01日 10:02

相关推荐

    JPA关联关系

    在实际开发中,利用IDEA等集成开发环境的JPA工具支持,可以便捷地创建和管理这些关联关系。例如,使用反向工程(Reverse Engineering)可以从现有数据库生成实体类和映射文件,直观地查看和调整关联关系。此外,...

    JPA实体关联(hibernate实现)

    Java Persistence API (JPA) 是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它提供了一种面向对象的方式来操作数据,而Hibernate是JPA的一个流行实现。在JPA中,实体间的关联映射是核心概念之一,...

    JPA映射关系详解javax JPA JPA映射关系 JPA映射

    Java Persistence API (JPA) 是一种用于管理关系型数据库中的数据的标准 Java 技术。JPA 提供了一种对象关系映射 (ORM) 方法来处理数据库,允许开发者以面向对象的方式操作数据库。本文将详细介绍 JPA 中四种常见的...

    JPA_2_一对多双向关联关系

    **JPA 2 一对多双向关联关系** Java Persistence API(JPA)是Java平台上的一个标准,用于处理对象关系映射(ORM),使得开发者可以使用面向对象的方式操作数据库。在JPA中,一对多关联关系是常见的实体间关系类型...

    使用jpa映射关联和继承

    在Java世界中,Java Persistence API(JPA)是用于对象关系映射(ORM)的一种标准框架,它允许开发者将数据库操作与业务逻辑紧密结合,而无需编写大量的SQL代码。本篇文章将深入探讨如何在JPA中映射关联和实现继承。...

    JPA学习笔记-EJB-04JPA关联映射总结

    JPA(Java Persistence API)是Java平台上的一个标准,用于管理关系数据库中的数据,简化了对象持久化的流程。在EJB(Enterprise JavaBeans)框架中,JPA被广泛使用,提供了一种面向对象的方式来处理数据库交互。本...

    jpa 关联映射jpa 关联映射jpa 关联映射

    在 JPA 中,实体之间的关联关系非常重要,因为它们描述了实体如何相互作用以及如何存储这些关系。本文将深入探讨 JPA 中的一对一 (One-to-One)、一对多 (One-to-Many)、多对一 (Many-to-One) 和多对多 (Many-to-Many...

    实用JPA开发指南----jpa核心技术(关联关系等的配置高级配置)

    在JPA中,**关联关系**是实体之间的一种关系,模仿了数据库中的表间关系。有四种主要的关联类型: 1. **一对一(OneToOne)**: 表示两个实体之间存在唯一的关系,就像一个人只有一个身份证。配置时,可以使用`@...

    JPA常用关系实现例子

    Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它是ORM(对象关系映射)框架的一种实现,允许开发者使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。JPA通过...

    JPA中,多个表相关联设定的方法。

    在Java世界中,Java Persistence API (JPA) 是一种用于管理关系数据库的框架,它使得对象-关系映射(ORM)变得更加便捷。JPA通过在Java类上使用特定的注解,将这些类映射到数据库中的表,从而简化了数据库操作。在处理...

    JPA视频教程_使用jpa映射关联和继承

    - `@OneToMany`, `@ManyToOne`, `@OneToOne`, `@ManyToMany`: 分别表示一对一、一对多、多对一和多对多的关联关系。 **2. 关联映射** 关联映射是JPA处理实体间关系的关键。四种基本的关系类型如下: - **一对一 ...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    14_传智播客JPA详解_JPA中的多对多双向关联的各项关系操作

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了ORM(对象关系映射)的过程。在JPA中,多对多(Many-to-Many)关联是一种常见的关系类型,适用于描述两个实体之间...

    JPA中的一对一双向关联

    在Java Persistence API (JPA) 中,一对一双向关联是一种关系映射,它允许两个实体类之间存在一对一的关系,并且每个实体都能引用对方。...在实际项目中,根据需求选择合适的关联类型并正确管理关联是至关重要的。

    JPA中的多对多双向关联实体定义与注解设置

    1. `@Entity`:标记一个类作为JPA的实体类,使得该类可以被JPA管理并映射到数据库表。 2. `@Table`:指定实体类对应的数据库表名。 3. `@Id`:标识实体类中的主键字段。 4. `@ManyToMany`:用于表示多对多关联。 5. ...

    JPA_3_一对一关联关系源码

    **JPA 一对一关联关系源码详解** Java Persistence API (JPA) 是Java平台上的一个标准,用于管理和持久化对象到数据库。它提供了一种面向对象的方式来操作数据库,简化了数据库编程。在JPA中,一对一(OneToOne)...

    JPA 实现继承关系

    在Java世界中,Java Persistence API (JPA) 是一种用于管理关系数据库的框架,它提供了对象-关系映射(ORM)的功能,使得开发者可以使用面向对象的方式来操作数据库。本篇文章将深入探讨如何在JPA中实现继承关系,这...

    jpa的实体映射关系7种

    在Java Persistence API (JPA) 中,实体映射关系是数据库关系模型与Java对象模型之间的桥梁,用于在ORM(对象关系映射)框架下管理数据。JPA 提供了多种映射关系,使得开发者能够方便地处理不同类型的关联。下面我们...

    JPA学习总结(二)--JPAOneToOne双向关联

    本文主要探讨的是JPA中的`@OneToOne`注解,它用于建立两个实体之间的一对一关联关系。在实际开发中,这种关联关系常常出现在需要精确映射一对一实体映射的情况,例如用户与个人信息、车辆与车牌号等。我们将会深入...

    13_jpa多对多双向关联实体定义与注解

    在Java世界中,Java Persistence API(JPA)是Oracle公司推出的用于对象关系映射(ORM)的标准框架,它使得开发者可以使用面向对象的方式来操作数据库。本篇将详细讲解JPA中的一个关键概念——多对多双向关联,并...

Global site tag (gtag.js) - Google Analytics