Hallo zusammen,
Ich habe folgende 2 Enties :
Und :
Hier erzeuget ich die 2 Entitäten :
Nun bekomme ich folgenden Fehler :
nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist:
Das Problem tritt nur auf wenn ich einen bereits gespeicherte Category verwende.
Ich habe mit den cascaden Typen herumgespielt aber leider das Problem noch nicht gelöst.
Eine Alternative ist : Einen Service zu schreiben, der prüft ob die Category bereits existiert. Aber ich dachte mir, dass es evtl. etwas einfacher geht
Ich habe folgende 2 Enties :
Java:
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "category")
@ToString
public class Category{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NonNull
@Getter
@Column(unique = true)
private String name;
}
Und :
Java:
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "document")
@ToString(callSuper = true)
public class Document {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NonNull
@Getter
@Builder.Default
@Enumerated(EnumType.STRING)
private DocumentType type = DocumentType.IMAGE;
@NonNull
private String name;
@NonNull
@ManyToMany(fetch = FetchType.EAGER,cascade = {CascadeType.PERSIST})
@Singular
private List<Category> categories;
Hier erzeuget ich die 2 Entitäten :
Java:
var category = Category.builder().name("2022").build();
var category2 = Category.builder().name("2023").build();
Document document = Document.builder().name("TestDokument")
.type(DocumentType.IMAGE)
.category(category)
.category(category2)
.build();
repository.saveAndFlush(document);
var document2 = Document.builder()
.name("TestDokument 2")
.type(DocumentType.IMAGE)
.category(category2).build();
repository.saveAndFlush(document2);
Nun bekomme ich folgenden Fehler :
nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist:
Das Problem tritt nur auf wenn ich einen bereits gespeicherte Category verwende.
Ich habe mit den cascaden Typen herumgespielt aber leider das Problem noch nicht gelöst.
Eine Alternative ist : Einen Service zu schreiben, der prüft ob die Category bereits existiert. Aber ich dachte mir, dass es evtl. etwas einfacher geht