当前位置: 首页 > 知识库问答 >
问题:

使用级联删除实体

胥玮
2023-03-14

代码:

@Entity
class Teacher implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
    @Column(nullable = false)
    @NotNull
    String name;
    @OneToMany(mappedBy = "teacher",cascade = CascadeType.REMOVE)
    List<Course> courses;
}

@Entity
public class Course implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
    @Column(nullable = false)
    @NotNull
    String name;
    @ManyToOne(cascade = CascadeType.REMOVE)
    Teacher teacher;
}

三个问题:

>

  • 我必须放置<code>CascadeType吗。在两个实体中删除?我希望它能正常工作,这样如果我删除了老师,课程就会自动删除。

    在我的数据库中,我的id无法正常工作。我希望它使id每次增加一个,但它目前增加了一些随机数。为什么呢?

    我还有两个@Entity类,但有@ManyToMany关系。当我想在数据库中持久化一个新对象时,我必须做什么?

  • 共有1个答案

    秦承安
    2023-03-14

    > 可能是其中之一的副本: JPA:级联删除


  • 不会删除子
    JPA 2.0 orphanRemoval=true VS on delete 级联
    https://stackoverflow.com/questions/22237631/jpa-does-not-cascade-delete-operation-from-parent-entity-to-child-entity
    你检查过这些参考吗?

    需要更多情报

    您可以单独持久化它们中的每一个,或者持久化类A的一个实例和类B的一个实例,反之亦然(假设您使用的是正确的< code>CascadeType和< code>@ManyToMany关系以及理解这两者的持久化框架)

  •  类似资料:
    • 我有一些关于“级联”的问题,在我的项目中,我有类别类,每个类可以是父类或子类。但我在同一个类中定义了哪一个是父母还是孩子。父母和孩子之间存在一对多的关系。这是我的实体类 我的问题是;当我删除子类别时,它的成功并没有问题。如果父类别有子类别,则无法删除父类别。 错误消息; Servlet.service()的servlet[调度Servlet]在上下文中与路径[]抛出异常[请求处理失败;嵌套异常or

    • 问题内容: 我试图做一个简单的例子,以学习如何从父表中删除一行并使用Doctrine2自动删除子表中的匹配行。 这是我正在使用的两个实体: Child.php: 父亲.php 这些表已在数据库上正确创建,但未创建“删除级联”选项。我究竟做错了什么? 问题答案: 在教义中有两种级联: 1)ORM级别- 在关联中使用- 这是在UnitOfWork中完成的计算,不影响数据库结构。删除对象时,UnitOf

    • 我目前对EF Core有一些问题。我有一些需要删除的数据,我正在努力查看流畅的API是如何工作的,正是关于函数。 考虑到微软自己网站的经典博客/帖子场景,我想知道到底是什么实体,OnDelete()是“目标”(因为没有更好的词),在某些情况下,它似乎是博客,在另一些情况下,是帖子。是否可以从两侧定义级联删除(即当父博客被删除时,帖子被删除),如果是这样,我认为代码应该如下所示: <代码>模型。实体

    • 问题内容: 我必须缺少SQLAlchemy的层叠选项的琐碎内容,因为我无法获得简单的层叠删除来正确操作-如果删除了父元素,则子对象将使用外键保留。 我在这里放了一个简洁的测试用例: 输出: 父母与子女之间存在简单的一对多关系。该脚本创建一个父级,添加3个子级,然后提交。接下来,它删除父级,但子级仍然存在。为什么?如何使孩子级联删除? 问题答案: 问题是sqlalchemy认为是父级的,因为这是您定

    • 主要内容:JPA级联删除示例,输出结果级联移除用于指定如果父实体被移除,则其所有相关实体也将被移除。 以下语法用于执行级联删除操作 - JPA级联删除示例 在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,其中包含属性:,,以及标记为级联规范的类型的对象。 文件: StudentEntity.java - 第2步: 在包下创建

    • 级联删除通常被用作数据库术语,用来描述删除一个数据行时自动删除关联的数据行的特征。EF Core 实现了一些不同的删除行为,并且允许对关联关系的删除行为进行配置。EF Core 还实现了相关的惯例,它会基于关系的必要性为每个关系配置有用的默认删除行为。 删除行为 删除行为是在 DeleteBehavior 枚举中定义的,可以将它传递给 OnDelete 流式 API 来控制主实体/父实体的删除是否