Hibernate mit Kotlin: @ManyToOne (fetch = FetchType.LAZY)

4

Ich verwende Hibernate mit Kotlin und ich habe ein Problem mit FetchType.LAZY auf @ManyToOne relations. Überlegen Sie Folgendes:

%Vor%

Das Problem ist, dass, wenn FetchType.LAZY verwendet wird, die abgerufene Event von der Klasse Event_$$_jvst_... mit JavaassistLazyInitializer ist. Aber das Ereignis wird niemals initialisiert, alles wird null oder leer sein.

  1. Sobald FetchType.LAZY entfernt wurde, funktioniert alles korrekt.
  2. Das ist in Java nicht passiert.
  3. Ich habe versucht, open für var hinzuzufügen, damit Event korrekt proxieziert werden kann. Keine Wirkung.
  4. Alle @Entity -Klassen sind natürlich auch open . Wenn das open Schlüsselwort entfernt wird, wird kein Proxy erstellt und daher keine Faulheit.

Meine Vermutung ist, dass Hibernate diese Standard-Kotlin-Getter nicht einfach ersetzen kann. Gibt es eine Möglichkeit, es zu lösen?

    
Vojtěch 22.09.2017, 21:51
quelle

2 Antworten

0

Sie können diese statische Methode verwenden, um Ihre Entity zu entpacken

%Vor%     
François LEPORCQ 23.09.2017 06:28
quelle
0

Ich schreibe ein einfaches Beispiel, um Ihr Problem zu überprüfen, und alles funktioniert gut.

%Vor%

Logs sieht so aus:

%Vor%

Lazy Initialisierung beginnt mit dem Laden von Felddaten, nachdem explizit ein Wert abgerufen wurde.

Hoffe, das wird dir helfen.

    
kurt 05.12.2017 15:47
quelle

Tags und Links