2016-03-28 6 views
0

Ich bin eine Entity-Klasse implementieren, die 2 Beziehungen ono viele, aber ich kann nicht verwenden fetch = FetchType.EAGER für die zwei Liste i verwenden FetchType.LAZY beide sollten fürWarum kann ich nicht 2 Listen auf der gleichen Entity-Klasse mit FetchType.EAGER verwenden

gibt es eine Lösung für beide

@OneToMany(mappedBy="fournisseur",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}) 
private List<Carburant_entree> carburant_entrees; 

@OneToMany(mappedBy="user",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}) 
private List<Users> theusers; 
+0

Mögliche Duplikat [Hibernate kann holen nicht gleichzeitig mehrere Beutel] (http://stackoverflow.com/questions/4334970/hibernate-cannot-simultaneously-fetch-multiple-bags) –

Antwort

0

Verwenden Sie einfach Set anstelle von List

@OneToMany(mappedBy="fournisseur",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}) 
private Set<CarburantEntree> carburantEntrees; 

@OneToMany(mappedBy="user",fetch = FetchType.EAGER,cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}) 
private Set<Users> users; 

Bitte, die Java Naming Conventntion folgen.

+0

danke, aber kann ich LazyCollection (LazyCollectionOption.FALSE) verwenden? –

+0

@AliBouslama Ich benutze es nie –

0

Ja EAGER zu verwenden. Es kann durch Hinzufügen von Anmerkungen, die die Beziehung mit

@LazyCollection(LazyCollectionOption.FALSE) 

in Ihrem Fall zu erreichen sein sollte es sein.

@LazyCollection(LazyCollectionOption.FALSE) 
@OneToMany(mappedBy="fournisseur",cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}) 
private List<Carburant_entree> carburant_entrees; 

@LazyCollection(LazyCollectionOption.FALSE) 
@OneToMany(mappedBy="user",cascade={ CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}) 
private List<Users> theusers; 
+0

, wenn ich versuche @lazycollection zu verwenden den Vermerk es doesn Erkenne nicht, dass Annotation was kann ich tun? –

+0

FetchType hat Beschränkungen, wie viel FetchType.EAGER verwendet werden kann. welches zwei Listen als EAGER lädt. Mit @LazyCollection (LazyCollectionOption.FALSE) können Sie beliebig viele Listen als EAGER laden. –

+0

Forgot zu erwähnen, dass '@LazyCollection (LazyCollectionOption.FALSE)' ist Winterschlaf spezifisch. Wenn Sie also nicht den Ruhezustand verwenden, funktioniert das nicht. In diesem Fall können Sie die @ v.ladynev-Lösung verwenden. –