Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Hibernate OnDelete Cascade não funciona para MySql, mas funciona em postgres e Ms-Sql


Isso é o que eu fiz para resolver esse problema com base no Spring Boot.

Solução

a partir de
// application.properties  
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

para
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

Explicação
Como você pode ver abaixo, parece que o valor padrão para CascadeDelete em MySQL5InnoDBDialect.java suporta apenas Cascade.
// MySQLDialect.java
@Override
    public boolean supportsCascadeDelete() {
        return false;
    }

// MySQL5InnoDBDialect.java
@Override
    public boolean supportsCascadeDelete() {
        return true;
    }