# Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings



## Zrebna (19. Mai 2022)

Hi!

Es sind 2 Tabellen gegeben, die eine N:1-Relation haben:
Produkte_n --------------------------------- 1_Hersteller

Ich kann mir problemlos via Java-Code die beiden Tabelle in meiner DB erzeugen lassen.

Ich möchte hierbei, dass wenn ein Hersteller gelöscht wird, auch all seine Produkte entfernt werden.
Da die Tabelle Produkte einen FS auf Hersteller hat, benötige ich quasi bei der Tabellenerzeugung: 'On Delete Cascade'.

Der entsprechende relevante Code in der "Java-Produkte-Klasse", der mir dann die Tabelle in meiner DB erzeugen soll, müsste doch folgender sein:

```
@ManyToOne(cascade = CascadeType.REMOVE)
    @JoinColumn(name = "hersteller_id")
    private Hersteller hersteller;
```

Wenn ich mir dann aber in der DB angucke, wie die Tabelle Produkte erstellt worden ist, steht da an relevanter Stelle:


```
CONSTRAINT fk8yi7co4ourgbjormifhwkcn51hf FOREIGN KEY (hersteller_id)
        REFERENCES public.produkte (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
```

Wir wollen ja 'ON DELETE CASCADE' haben - wieso erzeugt mein Java-Code nicht die Tabelle so, obwohl ich im Java-Code ' 'ON DELETE CASCADE'' mittels Verwendung von ' CascadeType.REMOVE' an entsprechender Stelle instruiert habe?

Hat hier evtl. Jemand eine Idee?

Lg
Zrebna


----------



## LimDul (20. Mai 2022)

Weil das meines Wissen nicht vorgesehen ist. Die Cascade Anmerkungen dienen für JPA, die müssen nicht auf der DB umgesetzt werden, sondern die werden durch die entsprechende JPA Implementierung vorgenommen. Nicht alles was du in JPA konfigurieren kannst, wird in DB Features umgesetzt, vieles bleibt schlicht rein im Java-Code

Edit: Hier ist es - inkl. Möglichkeiten - genauer beschrieben: https://localcoder.org/jpa-hibernate-how-to-define-a-constraint-having-on-delete-cascade


----------

