【发布时间】:2015-01-20 19:56:28
【问题描述】:
我一直遇到以下错误 - 请求处理失败;嵌套异常是 org.hibernate.hql.internal.ast.QuerySyntaxException:未映射强制 [来自强制]。查看此站点上的其他问题,错误映射类型似乎是一个问题,但我不相信这里会出现这种情况,因为我在 HQL 中使用“from Enforcement”并且我的课程是 Enforcement。
Enforcement.java:
package testspringmvc.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="enforcement")
public class Enforcement extends Element{
@Id
@Column(name="ENFORCEMENT_CD")
private String Id;
@Column(name="ENFORCEMENT_DESC")
private String name;
public String getId() {
return Id;
}
public void setId(String Id) {
this.Id = Id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MemberController.java
public class MemberController {
@Autowired
private RepositoryServices repositoryService;
private FilterOption filterOption;
@RequestMapping(value = "/search", method = RequestMethod.GET)
public ModelAndView loadFormPage() {
List<Document> repositoryList = new ArrayList<Document>();
// Create and add lists and objects to the model.
ModelAndView model = new ModelAndView("search");
model.addObject("document", new Document());
model.addObject("filter", new FilterOption());
model.addObject("enforcementList", repositoryService.getEnforcementList());
model.addObject("repositoryList", repositoryList);
model.addObject("repositorySize", repositoryList.size());
return model;
}
}
RepositoryDaoImpl.java:
@Repository
public class RepositoryDaoImpl implements RepositoryDao {
@Autowired
SessionFactory sessionFactory;
@Override
public List<Enforcement> getEnforcementList() {
Session session = sessionFactory.openSession();
@SuppressWarnings("unchecked")
List<Enforcement> enforcementList = session.createQuery("from Enforcement").list();
System.out.println(enforcementList);
session.close();
return enforcementList;
}
}
RepositoryServicesImpl.java:
@Service
public class RepositoryServicesImpl implements RepositoryServices
{
@Autowired
RepositoryDao repodao;
@Override
public List<Enforcement> getEnforcementList() {
return repodao.getEnforcementList();
}
}
堆栈跟踪:
JBWEB000070: exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: Enforcement is not mapped [from Enforcement]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
JBWEB000071: root cause
org.hibernate.hql.internal.ast.QuerySyntaxException: Enforcement is not mapped [from Enforcement]
org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3420)
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3309)
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:250)
org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1784)
gaimsspringmvc.repo.RepositoryDaoImpl.getEnforcementList(RepositoryDaoImpl.java:52)
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:606)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
com.sun.proxy.$Proxy34.getEnforcementList(Unknown Source)
gaimsspringmvc.services.RepositoryServicesImpl.getEnforcementList(RepositoryServicesImpl.java:56)
gaimsspringmvc.mvc.MemberController.loadFormPage(MemberController.java:79)
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:606)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?
-
添加了堆栈跟踪
-
您的
hibernate.cfg.xml可能有问题,例如:stackoverflow.com/questions/15144316/… -
你是对的,丹尼斯!我不得不修改我的 application-context.xml 文件并将该类添加为 sessionFactory bean 中的列表值
-
完美!请接受您自己的答案,以便人们知道问题已解决。
标签: java spring hibernate model-view-controller