Bereits gespeicherte Enity in OneToMany verwenden

8u3631984

Bekanntes Mitglied
Hallo zusammen

ICh habe folgendes Problem :

Ich habe folgende Struktur :

Java:
@Builder(setterPrefix = "with")
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Data
public class Season extends DefaultEntity{

    private int startYear;
    private int endYear;
}

Java:
@Builder(setterPrefix = "with")
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Data
public class Association extends DefaultEntity {

    @NonNull
    @Column(unique = true)
    private String name;

    @ManyToOne(cascade = CascadeType.ALL)
    private Season season;
}

Wenn ich nun ein Association object erzeuge und abspeichere :

Java:
        Season season = Season.builder()
                .withStartYear(2020)
                .withEndYear(2021)
                .build();
      //  seasonRepository.save(season);

        Association association = Association.builder()
                .withName("association")
                .withSeason(season)
                .build();

        Association association2 = Association.builder()
                .withName("association2")
                .withSeason(season)
                .build();

        associationRepository.save(association);
        associationRepository.save(association2);

wir das erste association Object noch erzeugt. Allerdings bekomme ich einen Fehler wenn ich ein bereits gespeichertes Season Object verwende einen Exception :
detached entity passed to persist: entity.Season

Warum es passiert ist mir eigentlich klar :
Durch die @ManyToOne(cascade = CascadeType.ALL) Annotation wird das Season Objekt versucht erneut zu speichern, allerdings ist das ja bereits vorhanden.
Gibt es eine Möglichkeit diesen Fehler zu umgehen.

Also ich kann natülich jedes Objekte die Cascade rausnehmen und jedes Objekte in einem seperaten Repo speichern - aber vielleicht geht es ja etwas einfacher.
 

Neue Themen


Oben