Hibernate Lazy Collection löschen

OnDemand

Top Contributor
Hallo zusammen,

habe folgende Collections, welche beim löschen des Products nicht gelöscht werden. Muss ich die Produkt-Objekte erst alle rausholen und dann das löschen der Bilder einzeln anstoßen? Möchte ungern Eager Loading machen weil das die Performance sehr beeinflusst.

Java:
public class Product {
    
    @OneToMany(orphanRemoval = true, cascade = {CascadeType.ALL})
    @LazyCollection(LazyCollectionOption.TRUE)
    @JoinColumn(name = "product_id")
    private List<ProductImage> productImages = new ArrayList<>();
}

Java:
public class ProductService{
    ...
        
     List<Product> list = productRepository.findByxxx(xxx);
        for (Product product : list) {
            productRepository.delete(product);
     }
}

Die Produkte werden alle gelöscht, aber die Images bleiben in ihrer Tabelle.
 

OnDemand

Top Contributor
In der Images Tabelle ist der primaryKey die ID (nicht product_id - das ist der ForeignKey). Das löschen funktioniert ja grundsätzlich, wenn es NICHT LAZY geladen wird. Das muss also daran liegen, dass diese Collection nicht geladen wird, wenn man das Product löscht.
 

Dimax

Top Contributor
Ist die Image Tabelle an die Tabelle Produkt referenziert? Wenn ja und das eine MySql Tabelle ist ,dann kann man ON DELETE CASCADE einstellen.
 

Oneixee5

Top Contributor
Zunächst sollte @LazyCollection(LazyCollectionOption.TRUE) nicht verwendet werden, @LazyCollection ist Hibernate spezifisch und es sollte nur auf JPA-Standards zurückgegriffen werden.
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL...ist im Prinzip ausreichend, da lazy fetching default ist:
Wenn man aber ganz sicher sein will: @OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "product")
 

OnDemand

Top Contributor
Wenn ich das mit dem Mapped by mache, ist meine product_id NULL in der DB. Was mach ich n hier falsch?

Java:
class Product{
    @OneToMany(orphanRemoval = true, cascade = {CascadeType.ALL},  fetch = FetchType.LAZY, mappedBy = "product")
    private List<ProductImage> productImages = new ArrayList<>();
}
Java:
class ProductImage{
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "product_id")
    private Product product;
}

Ich setzte über den Setter eine List an ProductImages, sehe die im Debugger auch, aber er speicher die ID nicht rein. Warum ist das so?

Edit: Wenn ich dem Image auch noch das Produkt setze, wirds gehen. Das hatte ich schon mal fällt mir grad ein, dann komme ich früher oder später wieder zu dem Teil wo ich "detached object..." Fehler bekomme. Hab ich noch nie kapiert.
 
Zuletzt bearbeitet:

Oneixee5

Top Contributor
mappedBy bezieht sich auf das Feld, dem die Beziehung gehört. Erforderlich, sofern die Beziehung nicht unidirektional ist.
Für eine umfassende Beurteilung möglicher Fehler ist zu wenig Code vorhanden. Man kann sich das erzeugte SQL ausgeben lassen und analysieren. So kommt man meist schon auf die Ursache des Problems. Das die product_id auf null gesetzt wird könnte mehrere Ursachen haben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Kotlin: DB-Relationen in Spring Boot Data / Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 6
H Laden der Hibernate Cfg in .jar Frameworks - Spring, Play, Blade, Vaadin & Co 5
ExceptionOfExpectation Persistierung in Hibernate(SpringBoot) Frameworks - Spring, Play, Blade, Vaadin & Co 10
padde479 org.hibernate.query.sqm.UnknownEntityException Frameworks - Spring, Play, Blade, Vaadin & Co 12
OnDemand Jasypt Hibernate 6 alternative gesucht Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
D org.hibernate.LazyInitializationException Frameworks - Spring, Play, Blade, Vaadin & Co 2
krgewb Hibernate - deleteByXXX Frameworks - Spring, Play, Blade, Vaadin & Co 3
Z Postgres, Hibernate Seqencenummer wird wiederholt und verursacht PK-Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 3
Z JPA, Hibernate, Postgres und Sequence-Nummern Frameworks - Spring, Play, Blade, Vaadin & Co 3
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
H Hibernate Sql Abfrage loggen Spring mit log4j.properties Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
S Spring JPA / Hibernate: save Methode arbeitet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Spring Data: Hibernate liest nicht alle Ebenen Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Data Hibernate mehrfache Suchkriterien Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot, Hibernate und OAuth2 wie komme ich an den User? Frameworks - Spring, Play, Blade, Vaadin & Co 13
D Spring Hibernate Struts2 ? Frameworks - Spring, Play, Blade, Vaadin & Co 1
F JPA org.hibernate.LazyInitializationException / Spring @Transactional Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Spring, Hibernate und JPA in einem Projekt Frameworks - Spring, Play, Blade, Vaadin & Co 4
I Nachladen mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
N MAVEN + Spring + JPA + Hibernate + JUnit4 Frameworks - Spring, Play, Blade, Vaadin & Co 5
E Tomcat mit Hibernate und Spring - Problem mit Connection Pool Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Context initialization failed - mit Spring, JPA, Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 1
B Buchempfehlung für Groovy, Spring, Hibernate, SOAP, J2EE gesucht Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Hibernate - Spring Roo Frameworks - Spring, Play, Blade, Vaadin & Co 0
Dit_ Springsource Toolsuit | Hibernate intergration Frameworks - Spring, Play, Blade, Vaadin & Co 1
J Test mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 5
D [InvalidDataAccessApiUsageException] Spring Data JPA / Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 1
B SpringMVC-EntityManagerFactory-Hibernate-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Problem mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 0
R Projektübergreifende Entities mit Tomcat (Spring/JPA/Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 2
N Wie manage ich unter Spring mehrere Datenbankverbindung mit Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 6
Y Sessionmanagement (ThreadLocal) in Hibernate via Spring möglich? Frameworks - Spring, Play, Blade, Vaadin & Co 2
C Aufgabe in OSGI/Hibernate/Spring-DM Frameworks - Spring, Play, Blade, Vaadin & Co 4
dunhillone Problem mit Spring & Hibernate Sessions Frameworks - Spring, Play, Blade, Vaadin & Co 2
dunhillone Problem mit Spring & Hibernate Sessions Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring / Jpa / Hibernate -> java.lang.IllegalArgumentException: Unknown entity Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Hibernate und JDBC über Spring Frameworks - Spring, Play, Blade, Vaadin & Co 3
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Spring Data: Lazy Fetch mit Self-Join. Frameworks - Spring, Play, Blade, Vaadin & Co 1
K Spring IoC: Bean mit typisierter Collection Frameworks - Spring, Play, Blade, Vaadin & Co 4

Ähnliche Java Themen


Oben