简体   繁体   中英

Hibernate 4 + org.hibernate.MappingException: Unknown entity

I am using Spring MVC 3 and Hibernate 4

Below is code to perform DAO operations

@Repository("headCategoryDao")
@Transactional
public class HeadCategoryDaoImpl extends CustomHibernateDaoSupport<HeadCategory, Integer> implements HeadCategoryDao {

    @Override
    public void delete(HeadCategory headCategory)  throws InstanceNotFoundException {
        getHibernateTemplate().delete(headCategory);
    }

    @Override
    public HeadCategory findHeadCategoryByName(String headCategoryName) throws InstanceNotFoundException {
        List list = getHibernateTemplate().createCriteria("from HeadCategory where headCategoryName="+headCategoryName).list();
        if(list.isEmpty()) {
            throw new InstanceNotFoundException("HeadCategory not found for provided headCategoryName");
        }
        return (HeadCategory) list.get(0);
    }

    @Override
    public List<HeadCategory> getHeadCategoriesByMainType(WealthConstants.ACCOUNT_TYPE mainCategoryType)  {
        List list = getHibernateTemplate().createCriteria("from HeadCategory where mainCategoryType="+ mainCategoryType).list();        
        return list;
    }
}

findHeadCategoryByName method is called throws below exception, what can be issue ?

nested exception is org.hibernate.MappingException: Unknown entity: from HeadCategory where headCategoryName=Cash In Hand] with root cause
org.hibernate.MappingException: Unknown entity: from HeadCategory where headCategoryName=Cash In Hand
    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1131)
    at org.hibernate.internal.SessionImpl.getOuterJoinLoadable(SessionImpl.java:1737)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1642)
    at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)
    at com.wms.dao.impl.common.HeadCategoryDaoImpl.findHeadCategoryByName(HeadCategoryDaoImpl.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy35.findHeadCategoryByName(Unknown Source)
    at com.wms.service.impl.common.HeadCategoryServiceImpl.findHeadCategoryByName(HeadCategoryServiceImpl.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy36.findHeadCategoryByName(Unknown Source)
    at com.wms.web.helper.ScriptHelper.headsScript(ScriptHelper.java:282)
    at com.wms.web.helper.ScriptHelper.initialDataScriptExecution(ScriptHelper.java:130)
    at com.wms.web.controller.StaticController.buildDataUsingScript(StaticController.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

Look at the query:

from HeadCategory where headCategoryName=Cash In Hand

That's not a valid query at all. What is Cash? What is Hand? A correct query would be

from HeadCategory where headCategoryName='Cash In Hand'

Learn to pass parameters correctly and safely to queries:

session.createQuery("from HeadCategory where headCategoryName = :name")
       .setString("name", headCategoryName)
       .list();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM