2015-07-14 2 views
2

Hy Я хочу загрузить все рабочие таблицы из таблицы JobSeeker с помощью одного запроса и с критериями, а вместо спящего режима вместо спящего 1 запроса написать n запрос для n JobSeeker, и у меня нет идеи, почему бы вам помочь. Это мой JobSeeker класс:Hibernate почему создает n запрос вместо 1?

@Entity 
@Table(name="JOB_SEEKER") 
public class JobSeeker extends BaseEntity{ 

@Column(name = "name", length = 128, nullable = false) 
@Expose 
private String name; 

@OneToOne 
@JoinColumn(name = "user_id") 
private User user; 

. 
. 
. 

Это мой класс User:

@Entity 
@Table(name="USER_AUTH") 
public class User extends BaseEntity { 

@Column(name = "username", nullable = false, length = 64, unique = true) 
@Size(max=64) 
@Expose 
@NotEmpty 
private String username; 

@Column(name = "password", nullable = false, length = 64) 
@Size(min=6,max=64) 
private String password; 

@OneToOne(mappedBy = "user", cascade=CascadeType.ALL) 
private UserSettings userSettings; 


@OneToOne(mappedBy = "user", fetch = FetchType.LAZY, cascade=CascadeType.ALL) 
@Fetch(FetchMode.SELECT) 
private JobSeeker jobSeeker; 
. 
. 
. 

И UserSettings класс:

@Entity 
@Table(name="USER_SETTINGS") 
public class UserSettings extends BaseEntity{ 

@OneToOne 
@JoinColumn(name = "user_id") 
@Expose 
private User user; 
. 
. 
. 

И мой FindAll выбрать:

Session session = getCurrentSession(); 

Criteria criteria = session.createCriteria(JobSeeker.class, "jobSeeker") 
     .setFirstResult(dataTableFilter.iDisplayStart) 
     .setMaxResults(dataTableFilter.iDisplayLength); 
List<?> list = new ArrayList(); 
list = criteria.list(); 

И это делает это querys:

Hibernate: select this_.ID as ID1_16_3_, this_.CREATED_BY as CREATED_2_16_3_, this_.CREATED_DATE as CREATED_3_16_3_, this_.MODIFIED_BY as MODIFIED4_16_3_, this_.MODIFIED_DATE as MODIFIED5_16_3_, this_.VERSION as VERSION6_16_3_, this_.adress as adress7_16_3_, this_.city as city8_16_3_, this_.forgot_password as forgot_p9_16_3_, this_.time_forgot_password as time_fo10_16_3_, this_.name as name11_16_3_, this_.not_seen as not_see12_16_3_, this_.phone as phone13_16_3_, this_.picture_path as picture14_16_3_, this_.user_id as user_id15_16_3_, user2_.ID as ID1_26_0_, user2_.CREATED_BY as CREATED_2_26_0_, user2_.CREATED_DATE as CREATED_3_26_0_, user2_.MODIFIED_BY as MODIFIED4_26_0_, user2_.MODIFIED_DATE as MODIFIED5_26_0_, user2_.VERSION as VERSION6_26_0_, user2_.email as email7_26_0_, user2_.facebook_id as facebook8_26_0_, user2_.hash_code as hash_cod9_26_0_, user2_.linkedin_id as linkedi10_26_0_, user2_.password as passwor11_26_0_, user2_.role_id as role_id15_26_0_, user2_.status as status12_26_0_, user2_.twitter_id as twitter13_26_0_, user2_.username as usernam14_26_0_, role3_.ID as ID1_22_1_, role3_.CREATED_BY as CREATED_2_22_1_, role3_.CREATED_DATE as CREATED_3_22_1_, role3_.MODIFIED_BY as MODIFIED4_22_1_, role3_.MODIFIED_DATE as MODIFIED5_22_1_, role3_.VERSION as VERSION6_22_1_, role3_.description as descript7_22_1_, role3_.name as name8_22_1_, usersettin4_.ID as ID1_27_2_, usersettin4_.CREATED_BY as CREATED_2_27_2_, usersettin4_.CREATED_DATE as CREATED_3_27_2_, usersettin4_.MODIFIED_BY as MODIFIED4_27_2_, usersettin4_.MODIFIED_DATE as MODIFIED5_27_2_, usersettin4_.VERSION as VERSION6_27_2_, usersettin4_.last_news_send_date as last_new7_27_2_, usersettin4_.preferred_language as preferre8_27_2_, usersettin4_.recieve_newsletter as recieve_9_27_2_, usersettin4_.user_id as user_id10_27_2_ from JOB_SEEKER this_ left outer join USER_AUTH user2_ on this_.user_id=user2_.ID left outer join ROLE role3_ on user2_.role_id=role3_.ID left outer join USER_SETTINGS usersettin4_ on user2_.ID=usersettin4_.user_id order by this_.name asc 
Hibernate: select jobseeker0_.ID as ID1_16_3_, jobseeker0_.CREATED_BY as CREATED_2_16_3_, jobseeker0_.CREATED_DATE as CREATED_3_16_3_, jobseeker0_.MODIFIED_BY as MODIFIED4_16_3_, jobseeker0_.MODIFIED_DATE as MODIFIED5_16_3_, jobseeker0_.VERSION as VERSION6_16_3_, jobseeker0_.adress as adress7_16_3_, jobseeker0_.city as city8_16_3_, jobseeker0_.forgot_password as forgot_p9_16_3_, jobseeker0_.time_forgot_password as time_fo10_16_3_, jobseeker0_.name as name11_16_3_, jobseeker0_.not_seen as not_see12_16_3_, jobseeker0_.phone as phone13_16_3_, jobseeker0_.picture_path as picture14_16_3_, jobseeker0_.user_id as user_id15_16_3_, user1_.ID as ID1_26_0_, user1_.CREATED_BY as CREATED_2_26_0_, user1_.CREATED_DATE as CREATED_3_26_0_, user1_.MODIFIED_BY as MODIFIED4_26_0_, user1_.MODIFIED_DATE as MODIFIED5_26_0_, user1_.VERSION as VERSION6_26_0_, user1_.email as email7_26_0_, user1_.facebook_id as facebook8_26_0_, user1_.hash_code as hash_cod9_26_0_, user1_.linkedin_id as linkedi10_26_0_, user1_.password as passwor11_26_0_, user1_.role_id as role_id15_26_0_, user1_.status as status12_26_0_, user1_.twitter_id as twitter13_26_0_, user1_.username as usernam14_26_0_, role2_.ID as ID1_22_1_, role2_.CREATED_BY as CREATED_2_22_1_, role2_.CREATED_DATE as CREATED_3_22_1_, role2_.MODIFIED_BY as MODIFIED4_22_1_, role2_.MODIFIED_DATE as MODIFIED5_22_1_, role2_.VERSION as VERSION6_22_1_, role2_.description as descript7_22_1_, role2_.name as name8_22_1_, usersettin3_.ID as ID1_27_2_, usersettin3_.CREATED_BY as CREATED_2_27_2_, usersettin3_.CREATED_DATE as CREATED_3_27_2_, usersettin3_.MODIFIED_BY as MODIFIED4_27_2_, usersettin3_.MODIFIED_DATE as MODIFIED5_27_2_, usersettin3_.VERSION as VERSION6_27_2_, usersettin3_.last_news_send_date as last_new7_27_2_, usersettin3_.preferred_language as preferre8_27_2_, usersettin3_.recieve_newsletter as recieve_9_27_2_, usersettin3_.user_id as user_id10_27_2_ from JOB_SEEKER jobseeker0_ left outer join USER_AUTH user1_ on jobseeker0_.user_id=user1_.ID left outer join ROLE role2_ on user1_.role_id=role2_.ID left outer join USER_SETTINGS usersettin3_ on user1_.ID=usersettin3_.user_id where jobseeker0_.user_id=? 
Hibernate: select jobseeker0_.ID as ID1_16_3_, jobseeker0_.CREATED_BY as CREATED_2_16_3_, jobseeker0_.CREATED_DATE as CREATED_3_16_3_, jobseeker0_.MODIFIED_BY as MODIFIED4_16_3_, jobseeker0_.MODIFIED_DATE as MODIFIED5_16_3_, jobseeker0_.VERSION as VERSION6_16_3_, jobseeker0_.adress as adress7_16_3_, jobseeker0_.city as city8_16_3_, jobseeker0_.forgot_password as forgot_p9_16_3_, jobseeker0_.time_forgot_password as time_fo10_16_3_, jobseeker0_.name as name11_16_3_, jobseeker0_.not_seen as not_see12_16_3_, jobseeker0_.phone as phone13_16_3_, jobseeker0_.picture_path as picture14_16_3_, jobseeker0_.user_id as user_id15_16_3_, user1_.ID as ID1_26_0_, user1_.CREATED_BY as CREATED_2_26_0_, user1_.CREATED_DATE as CREATED_3_26_0_, user1_.MODIFIED_BY as MODIFIED4_26_0_, user1_.MODIFIED_DATE as MODIFIED5_26_0_, user1_.VERSION as VERSION6_26_0_, user1_.email as email7_26_0_, user1_.facebook_id as facebook8_26_0_, user1_.hash_code as hash_cod9_26_0_, user1_.linkedin_id as linkedi10_26_0_, user1_.password as passwor11_26_0_, user1_.role_id as role_id15_26_0_, user1_.status as status12_26_0_, user1_.twitter_id as twitter13_26_0_, user1_.username as usernam14_26_0_, role2_.ID as ID1_22_1_, role2_.CREATED_BY as CREATED_2_22_1_, role2_.CREATED_DATE as CREATED_3_22_1_, role2_.MODIFIED_BY as MODIFIED4_22_1_, role2_.MODIFIED_DATE as MODIFIED5_22_1_, role2_.VERSION as VERSION6_22_1_, role2_.description as descript7_22_1_, role2_.name as name8_22_1_, usersettin3_.ID as ID1_27_2_, usersettin3_.CREATED_BY as CREATED_2_27_2_, usersettin3_.CREATED_DATE as CREATED_3_27_2_, usersettin3_.MODIFIED_BY as MODIFIED4_27_2_, usersettin3_.MODIFIED_DATE as MODIFIED5_27_2_, usersettin3_.VERSION as VERSION6_27_2_, usersettin3_.last_news_send_date as last_new7_27_2_, usersettin3_.preferred_language as preferre8_27_2_, usersettin3_.recieve_newsletter as recieve_9_27_2_, usersettin3_.user_id as user_id10_27_2_ from JOB_SEEKER jobseeker0_ left outer join USER_AUTH user1_ on jobseeker0_.user_id=user1_.ID left outer join ROLE role2_ on user1_.role_id=role2_.ID left outer join USER_SETTINGS usersettin3_ on user1_.ID=usersettin3_.user_id where jobseeker0_.user_id=? 
. 
. 

Я пытался поставить в JobSeeker класса @OneToOne (скачивает = FetchType.LAZY) с этой записью только один запрос, но, например, в findOne() не дает прокси-сеанса для пользователя, не загружал пользователя, и мне это нужно. В findAll мне нужен только JobSeeker без пользователя. Я бы написал select с hibernate.query, но мне нужно сделать с критериями. Кто-нибудь может мне помочь?

UPDATE: Общий класс:

public abstract class AbstractHibernateDao<T extends BaseEntity, PK extends Serializable> implements IOperations<T, PK> { 

    private Class<T> clazz; 
    private Class<PK> pkClazz; 

    @Autowired 
    private SessionFactory sessionFactory; 


    protected final void setClazz(final Class<T> clazzToSet, final Class<PK> plClazzToSet) { 
     clazz = Preconditions.checkNotNull(clazzToSet); 
     pkClazz = Preconditions.checkNotNull(plClazzToSet); 
    } 

    @Override 
    public final T findOne(final PK id) { 
     return (T) getCurrentSession().get(clazz, id); 
    } 

UPDATE Если fetchType ленивым идет хорошо на FindAll пишет только один запрос

@OneToOne(fetch = FetchType.LAZY, optional = false) 
@JoinColumn(name = "user_id") 
private User user; 

но дает эту ошибку на jobSeekerService.findOne (идентификатор):

SEVERE: Servlet.service() for servlet [spring-mvc-dispatcher] in context with path [/ProiectName] threw exception [Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/views/layout/adminLayout.jsp'.] with root cause 
org.hibernate.LazyInitializationException: could not initialize proxy - no Session 
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165) 
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286) 
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) 
    at com.proiect.hrms.persistence.model.User_$$_jvstd45_a.getEmail(User_$$_jvstd45_a.java) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:87) 
    at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104) 
    at org.apache.el.parser.AstValue.getValue(AstValue.java:183) 
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) 
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026) 
    at org.apache.jsp.WEB_002dINF.views.admin.main.candidates.details_jsp._jspService(details_jsp.java:143) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544) 
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954) 
    at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684) 
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678) 
    at org.apache.tiles.request.jsp.JspRequest.doInclude(JspRequest.java:123) 
    at org.apache.tiles.request.AbstractViewRequest.dispatch(AbstractViewRequest.java:47) 
    at org.apache.tiles.request.render.DispatchRenderer.render(DispatchRenderer.java:47) 
    at org.apache.tiles.request.render.ChainedDelegateRenderer.render(ChainedDelegateRenderer.java:68) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:259) 
    at org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:188) 
    at org.apache.tiles.template.InsertAttributeModel.execute(InsertAttributeModel.java:132) 
    at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:299) 
    at org.apache.jsp.WEB_002dINF.views.layout.adminLayout_jsp._jspx_meth_tiles_005finsertAttribute_005f3(adminLayout_jsp.java:304) 
    at org.apache.jsp.WEB_002dINF.views.layout.adminLayout_jsp._jspService(adminLayout_jsp.java:187) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 
    at org.apache.tiles.request.servlet.ServletRequest.forward(ServletRequest.java:265) 
    at org.apache.tiles.request.servlet.ServletRequest.doForward(ServletRequest.java:228) 
    at org.apache.tiles.request.AbstractClientRequest.dispatch(AbstractClientRequest.java:57) 
    at org.apache.tiles.request.render.DispatchRenderer.render(DispatchRenderer.java:47) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:259) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:397) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:238) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:221) 
    at org.apache.tiles.renderer.DefinitionRenderer.render(DefinitionRenderer.java:59) 
    at org.springframework.web.servlet.view.tiles3.TilesView.renderMergedOutputModel(TilesView.java:114) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
+0

yo should google о n + 1 проблемах в спящем режиме и каждом круге. Есть способы настроить его. –

+0

Это первое, что я делаю, но у меня не было решения для моей проблемы, вот почему я пришел сюда и спросил его – FAndrew

ответ

2

Просто замените конкретный фрагмент кода следующим кодом, и все готово.

@OneToOne(mappedBy = "user", fetch = FetchType.LAZY, optional = false, cascade=CascadeType.ALL) 
@Fetch(FetchMode.JOIN) 
private JobSeeker jobSeeker; 

Престол, я просто изменил FetchMode.JOIN вместо FetchMode.SELECT.

С Hibernate Документов

SELECT: используйте избранный для каждого отдельного объекта, сбора, или присоединиться к нагрузке

Для получения более подробной информации, пожалуйста, обращайтесь: Hibernate Docs.

UPDATE: По умолчанию поведение в Hibernate, как это для извлечения стратегии, которая также играет роль здесь,

OneToMany: LAZY 
ManyToOne: EAGER 
ManyToMany: LAZY 
OneToOne: EAGER 

Для преодоления этого вам просто нужно обновить отображение OneToOne в JobSeaker классе, как это,

@OneToOne(fetch = FetchType.LAZY, optional = false) 
@JoinColumn(name = "user_id") 
private User user; 

Refer: Use of Optional flag.

ОБНОВЛЕНИЕ: Теперь у нас отключено поведение по умолчанию для активной загрузки спящего режима. Поэтому нам нужно вызвать спящий режим для загрузки данных, используя такой запрос соединения:

Session session = getCurrentSession(); 

Criteria criteria = session.createCriteria(JobSeeker.class, "jobSeeker") 
     .createAlias("jobSeeker.user","user") //default inner join 
     .setFirstResult(dataTableFilter.iDisplayStart) 
     .setMaxResults(dataTableFilter.iDisplayLength); 
List<?> list = new ArrayList(); 
list = criteria.list(); 
+0

Я изменил и дал те же запросы. – FAndrew

+0

, какую версию Hibernate вы используете? –

+0

4.3.6.Final - version – FAndrew