标签: cascading-deletes

为什么手动定义的Spring Data JPA删除查询不会触发级联?

我有以下问题:当我尝试删除具有以下关系的实体时:

@OneToMany(mappedBy="pricingScheme", cascade=CascadeType.ALL, orphanRemoval=true)
private Collection<ChargeableElement> chargeableElements;
Run Code Online (Sandbox Code Playgroud)

CrudRepository通过提供删除方法它消除其所有的充电元件,其是精细沿着实体。当我尝试使用自定义删除时出现问题:

@Modifying
@Query("DELETE FROM PricingScheme p WHERE p.listkeyId = :listkeyId")
void deleteByListkeyId(@Param("listkeyId") Integer listkeyId);
Run Code Online (Sandbox Code Playgroud)

它说:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 
  Cannot delete or update a parent row: a foreign key constraint fails
  (`listkey`.`chargeableelements`, CONSTRAINT `FK_pox231t1sfhadv3vy7ahsc1wt` 
  FOREIGN KEY (`pricingScheme_id`) REFERENCES `pricingschemes` (`id`))
Run Code Online (Sandbox Code Playgroud)

为什么不允许我这样做?难道@Query方法不支持级联特性?我知道我可以findByListkeyId(…)先使用标准的delete方法删除持久性实体,但这是不雅致的。是否可以@Query按照我尝试的方式使用自定义方法?

jpa cascade jpql cascading-deletes spring-data-jpa

1
推荐指数
1
解决办法
4457
查看次数

Spring Data Jpa 删除删除映射上的外键行?

这是我的第一个实体。

@Entity
@Table(name = "person")
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;    

    private String firstName;
    private String lastName;

    // Removed other stuff for brevity
}
Run Code Online (Sandbox Code Playgroud)

这是我的第二个实体

@Entity
@Table(name = "membership")
public class Membership {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String membershipType;

    // Help here, I need another column called person_id which is what will correspond 
    // to persons or person rows from person table
}
Run Code Online (Sandbox Code Playgroud)

本质上,在person表中我们将有n人员(n行)。在membership …

hibernate jpa one-to-many cascading-deletes spring-data-jpa

1
推荐指数
1
解决办法
1万
查看次数

Laravel 在删除时添加级联到现有表

在我的 Laravel 应用程序中,我有一张名为“研究”的表,另一个名为“论文”的表。它们具有一对多的关系,其中每个研究可以有一篇或多篇论文。在论文迁移文件中,我使用以下命令创建了外键约束:

        //foreign key for the research model
        $table->unsignedBigInteger('research_id');
        $table->index('researach_id');
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个新的迁移来添加级联 onDelete,以便在删除其父研究时删除论文。我该怎么做?我正在使用 Laravel 5.1

编辑

所以答案与接受的答案非常相似,只是我必须先删除该列,然后添加外键。因为我还没有进入生产环境,所以删除列不是问题,但如果您处于生产环境中,您最终可能会弄乱数据库中数据的一致性。所以要小心

migration foreign-keys cascading-deletes laravel

1
推荐指数
1
解决办法
6177
查看次数

deleteById() 方法不适用于 ManyToMany 映射:Spring Boot 和 JPA

我有一个场景,其中策略实体表之间有一个多对多映射。这是实体代码-InsurancePolicy.java-

@Entity
@Table(name = "insurance_policy")

public class InsurancePolicy {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="policy_id")
    private long policyId;

    @Column(name="policy_name",nullable = false,unique = true)
    private String policyName;

    //Short description
    @Column(name="policy_description",nullable = false)
    private String policyDescription;

    //Long description
    @Column(name="choose_description",nullable = false)
    private String chooseDescription;


    //many policies can belong to one category
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "company_id", nullable = false)
    private Company company;

    //many policies can belong to one category
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="category_id",nullable=false)
    private Category category;

    @ManyToMany(mappedBy …
Run Code Online (Sandbox Code Playgroud)

java cascade cascading-deletes spring-data-jpa spring-boot

1
推荐指数
1
解决办法
256
查看次数

在InnoDB中定义关系时的CASCADE

我想知道在InnoDB中定义关系时代表CASCADE的是什么?

我看到它与动作有关:ON DELETE&ON UPDATE.

我是否必须在表格中的每个关系上将其设置为CASCADE?

mysql innodb database-relations cascading-deletes sql-delete

0
推荐指数
1
解决办法
1336
查看次数

有没有办法生成级联删除语句?

假设我在表中有一行AI希望删除但在其他表中有多个外键约束.有没有办法自动生成删除命令?我认为一个工具可以递归地查看外键,然后生成一个删除语句来处理所有外键应该存在,但我找不到一个.

我在MSSql server2008上

sql sql-server cascading-deletes sql-delete

0
推荐指数
1
解决办法
671
查看次数