In Employee and Phone exampleSpring Data JPA, Hibernate, @ManyToOne (Fetch = FetchType.LAZY) und org.hibernate.LazyInitializationException: konnte nicht initialisiert werden Proxy - keine Session
Wie Hibernate faule Initialisierung machen arbeiten (in Spring Boot)?
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at com.example.domain.Employee_$$_jvstb7e_2.toString(Employee_$$_jvstb7e_2.java) ~[bin/:na]
at java.lang.String.valueOf(String.java:2994) ~[na:1.8.0_74]
at java.lang.StringBuilder.append(StringBuilder.java:131) ~[na:1.8.0_74]
at com.example.domain.Phone.toString(Phone.java:13) ~[bin/:na]
at com.example.SpringBootQuerydslTestBean$1.run(SpringBootQuerydslTestBean.java:49) ~[bin/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
... 6 common frames omitted
public class Phone {
...
@ManyToOne(fetch=FetchType.LAZY)
private Employee owner;
P. S. Einige rät, FetchType.EAGER
wie in org.hibernate.LazyInitializationException: could not initialize proxy - no Session, zu verwenden, aber das Lazy-Laden zu machen (innerhalb Spring Boot, Spring Data JPA) ist genau mein Ziel.
haben Sie current_session_context_class versucht -> Thread? – Apostolos
Haben Sie repository.impl-Klassen? Sie können Daten von der JPA-Abfrage abrufen. –
Erstellen Sie einen richtigen 'toString', der die Rückreferenz nicht enthält. Das Problem ist, dass Sie etwas protokollieren (ich schätze) ... Wieder potentiell gefährlich, als wenn es funktionieren würde, würden Sie wahrscheinlich auf eine Stack-Überlauf-Ausnahme stoßen, weil Pone auf "Employee" verweist, was wahrscheinlich wieder auf 'Phone' verweist und immer und immer wieder. –