【问题标题】:MappingException: Unknown entity映射异常:未知实体
【发布时间】:2013-04-28 06:49:02
【问题描述】:

我正在使用 Spring、Maven、Hibernate、MVC 项目。在构建项目并安装依赖项后,我得到了这个异常。似乎很奇怪。所有测试单元都成功,并且没有指示数据库配置不正确。

我正在使用 Tomcat7 JRE 1.7 的 ojdbc6 驱动程序。那么有什么问题呢?

注意:代码本身没有问题。因为它和我的朋友一起工作得很好。所以不要告诉我改变与类或模型相关的东西。该项目经过全面测试。这似乎是一个奇怪的问题。

Apr 28, 2013 10:40:56 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class    com.nortal.web.listener.VersionListener
org.hibernate.MappingException: Unknown entity: com.me.personal.model.metadata.SchemaInfo
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:691)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:92)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:1005)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:998)
at com.nortal.persistence.hibernate.dao.HibernateGenericDao.getById(HibernateGenericDao.java:90)
at com.nortal.service.impl.GenericServiceImpl.getById(GenericServiceImpl.java:39)
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:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
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.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at sun.proxy.$Proxy19.getById(Unknown Source)
at com.nortal.web.listener.VersionListener.obtainSchemaVersion(VersionListener.java:88)
at com.nortal.web.listener.VersionListener.contextInitialized(VersionListener.java:32)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:655)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1628)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

*.xml.hbm 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.me.personal.metadata">
<class name="SchemaInfo" table="schema_info">
    <id name="id" type="long" column="id" />
    <property name="version" column="schema_version" type="integer" />
</class>

【问题讨论】:

  • 不知何故,该类没有通过休眠获得映射。仅显示错误并不能提供足够的信息。请显示休眠配置。以及相关代码。
  • @Bart 好的,我会的!
  • 请不要对我们大喊大叫。我们对您的代码没有做任何事情
  • @Baadshah :) 我想看看真正的原因。因为我认为这不是代码问题。这是环境问题或类似的事情!
  • 您的 hibernate.hbm.xml 是否包括所有必需的 *.hbm.xml ? SchemaInfo 是您的 hibernate.hbm.xml 中第一个声明的吗?

标签: java hibernate maven spring-mvc


【解决方案1】:

您已将休眠 XML 文件定义为 *xml.hbm。这是不正确的,因为休眠映射文件以*hbm.xml 结尾。解决此问题后,您可能会发现 Spring 将能够加载 POJO 的映射文件。

【讨论】:

  • 你是如何使用 spring 来获取包含 hbm.xml 映射文件的,因为这确实是这里的关键问题。
猜你喜欢
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2014-09-01
相关资源
最近更新 更多