2009-05-26 11 views
1

ich zwei verbundene Unternehmen habe, sagenWie aktualisiert man eine Sammlungstyp-Beziehung mit mappedBy in Hibernate?

@Entity 
public class Book { 
    @ManyToOne 
    Shelf shelf; 
} 

@Entity 
public class Shelf { 
    @OneToMany(mappedBy="shelf") 
    Set<Book> books; 
} 

Wenn ich ein leeres Regal (keine Bücher) holen, erstellen und ein neues Buch im Regal bestehen bleiben und holt dann das Regal wieder, seine Bücher Sammlung leer. Wenn ich es mit der Debugprotokollierung ausführe, sehe ich, dass Hibernate nicht zum zweiten Mal nach dem Regal sucht, es gibt es nur aus dem Sitzungscache zurück, wo es nicht weiß, dass seine Bücherkollektion aktualisiert wurde.

Wie kann ich den Effekt loswerden und den aktualisierten Stand des Regals erhalten?

Danke,
Artem.

+0

Problem gelöst? – Schildmeijer

Antwort

2

Scheint, Sie müssen es im Rahmen einer einzigen Sitzung (Transaktion) von Hand pflegen. Weder @Cascade noch EAGER beeinflussen den Sitzungscache

1

Versuchen auf Typ EAGER für Bücher in Regale-Set holen:

@Entity 
public class Shelf { 
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER) 
    Set<Book> books; 
} 
+0

Ich will nicht, dass es eifrig ist. Das würde die Leistung schlecht treffen – artemb

1

Ist @Cascade, was Sie suchen?

+1

Es klingt wie es ist, aber ich kann es nicht funktionieren. Welchen CascadeType soll ich verwenden? – artemb

+0

Cascade hilft hier nicht –

Verwandte Themen