Hibernate Exception - could not resolve property:

hibernate

Solution

crit = getCurrentSession().createCriteria(Module.class);
crit.add(Restrictions.eq("Staff.staffId", staffId));

This means that you're telling Hibernate that the property `id` of the property `Staff` of the entity `Module` should be equal to `staffId`. But there is no `Staff` property in `Module`, as the exception message rightly says. `Module` has a property named `setter`, and another one named `checker`.

Problem

I am trying to retrieve an object and its children. The request comes up with an exception. Models - The staff class is a self reference class where the checker with a checker_id is also a staff. And also both the staff and checker has a one to many relationship with the module model. ``` public class Staff implements Serializable, @Id @Column(name = "staff_id") private String staffId; @ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="checker_id") private Staff checker; @OneToMany(mappedBy="checker", orphanRemoval=true, cascade = CascadeType.ALL) private Set<Staff> setters = new HashSet<Staff>(); @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="setter") private Set<Module> sModule = new HashSet<Module>(); @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="checker") private Set<Module> cModule = new HashSet<Module>(); //getters and setters} ``` Module model ``` public class Module implements Serializable{ @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="staff_id", insertable=false, updatable=false) private Staff setter; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="checker_id", insertable=false, updatable=false) private Staff checker; //getters and setters } ``` DAO code ``` @Transactional @SuppressWarnings("unchecked") public Staff getWithModules(String staffId){ //Retrieve Staff Criteria crit = getCurrentSession().createCriteria(Staff.class); crit.add(Restrictions.eq("staffId", staffId)); Staff staff = get(crit); //Retrieve the modules for the staff crit = getCurrentSession().createCriteria(Module.class); crit.add(Restrictions.eq("Staff.staffId", staffId)); crit.add(Restrictions.isNull("checkerId")); crit.addOrder(Order.asc("moduleId")); Set<Module> sModule = new LinkedHashSet<Module>(crit.list()); staff.setsModule(sModule); //Set<Module> modules = new LinkedHashSet<Module>(crit.list()); //staff.setModules(modules); return staff; } ``` When I try to get any staff id and along with it the modules attached to it. I get this error in the stacktrace: ``` org.hibernate.QueryException: could not resolve property: Staff of: com.project.professional.model.Module org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:83) org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:77) org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1945) org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:61) org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1920) org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:523) org.hibernate.loader.criteria.CriteriaQueryTranslator.findColumns(CriteriaQueryTranslator.java:538) org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:66) org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:419) org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:123) org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:92) org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:95) org.hibernate.internal.SessionImpl.list(SessionImpl.java:1602) org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374) com.project.professional.dao.StaffDAO.getWithModules(StaffDAO.java:60) com.project.professional.dao.StaffDAO$$FastClassByCGLIB$$d033d033.invoke(<generated>) org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631) com.project.professional.dao.StaffDAO$$EnhancerByCGLIB$$58379429.getWithModules(<generated>) com.project.professional.service.StaffServiceImpl.getWithModules(StaffServiceImpl.java:54) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:601) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) $Proxy46.getWithModules(Unknown Source) com.project.professional.controller.StaffController.showStaffModules(StaffController.java:83) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:601) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ``` I would appreciate knowing what the problem is.

Original source