java - Hibernate LazyInitializingException -



java - Hibernate LazyInitializingException -

for example, have 2 classes. first

@entity @table(name = "employee") public class employee implements serializable{ @manytoone @joincolumn(name = "office_address_id") private address address; //setters , getters }

and second:

@entity @table(name = "address") public class address implements serializable{ @onetomany(mappedby = "address") private list<employee> employeelist; //setters , getters }

so if wand read employee database, read address field. address have employeelist lazyinitializingexception. but don't want know employeelist. wanna know employee.getaddress(). wand send json object employee. @ client-side have failed load resource: server responded status of 500 (internal server error) reason of lazyinitializingexception .

may use:

<bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="datasource" ref="datasource"/> <property name="persistenceunitname" value="mypersistenceunit"/> <property name="packagestoscan" value="com.itechart.model"/> <property name="jpavendoradapter"> <bean class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter"> <property name="databaseplatform" value="org.hibernate.dialect.mysql5innodbdialect"/> <property name="showsql" value="false"/> <property name="generateddl" value="true"/> </bean> </property> <!-- use--!> <property name="jpaproperties"> <props> <prop key="hibernate.enable_lazy_load_no_trans">true</prop> </props> </property> <!-- end use--!> <property name="persistenceprovider"> <bean class="org.hibernate.jpa.hibernatepersistenceprovider"></bean> </property> </bean>

your json mapper might access address.employeelist after hibernate session closed. why sends lazyinitializingexception.

you can seek of below solutions solve issue.

1 ) exclude employeelist json mapping

in jackson can adding @jsonignore

@jsonignore public list<employee> getemployeelist() { }

2 ) initialize employeelist before send json mapper.

you can calling employeelist.size() method

3 ) can alter fetchtype eager below

@onetomany(mappedby = "address", fetch = fetchtype.eager) private list<employee> employeelist;

java hibernate lazy-initialization

Comments

Popular posts from this blog

Delphi change the assembly code of a running process -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -

C++ 11 "class" keyword -