Spring 3.1 Hibernate 4 继承异常 [无法转换为 org.hibernate.mapping.RootClass]

2024-01-07

嗨,我刚刚开始使用 Spring 、 Hibernate4 和 maven 。基本上我的类层次结构是 HUmanMicroTask 从 MicroTask 扩展。将来可能还会有其他几个从 MicroTask 扩展的类。我试图为每个具体类一个表,这是启动和运行 spring3 和 hibernate 4 的最简单方法。但是当我运行我的代码时。我不断收到以下异常

13:11:52,260 ERROR TestContextManager:324 - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@6ef137d] to prepare test instance [HumanMicroTaskBaseHibernateTest@52c05d3b]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [database-config.xml]: Invocation of init method failed; nested exception is java.lang.ClassCastException: org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
    at org.springframework.test.context.support.DelegatingSmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228)
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)
    ... 24 more
Caused by: java.lang.ClassCastException: org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
    at org.hibernate.cfg.annotations.PropertyBinder.bind(PropertyBinder.java:212)
    at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:203)
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2013)
    at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:768)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:687)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3431)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3385)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1337)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1727)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:184)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:314)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    ... 38 more

虽然我看了很多论坛,但我无法确定我在哪里犯了错误。 我的 MicroTask 类如下所示:

@Entity
@Table(name = "MICROTASK")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class MicroTask {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(name = "MICROTASKID")
    private String microTaskId;
    @Column(name = "CREATIONDATE")
    private Date creationDate;
    @Column(name = "DESCRIPTION")
    private String description;

    public Date getCreationDate() {
        return creationDate;
    }
//More Getters and setters 

我的 HumanMicroTask 类如下所示:

    @Entity
    @Table(name = "HUMANMICROTASK")
    @AttributeOverrides({
        @AttributeOverride(name="microTaskId", column=@Column(name="MICROTASKID")),
        @AttributeOverride(name="creationDate", column=@Column(name="CREATIONDATE")),
        @AttributeOverride(name="description", column=@Column(name="DESCRIPTION"))
    })
    public class HumanMicroTask extends MicroTask {


        @Column(name = "TITLE")
        private String title;
        @Column(name = "CHANNEL")
        private String channel;
        @Id
        @Column(name = "HMTID")
        private String humanMicroTaskid;

        public String getId() {
            return humanMicroTaskid;
        }
//More Getters and setters

我的 config.xml 如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        ">

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass">
            <value>${jdbc.driver.className}</value>
        </property>
        <property name="jdbcUrl">
            <value>${jdbc.url}</value>
        </property>
        <property name="user">
            <value>${jdbc.username}</value>
        </property>
        <property name="password">
            <value>${jdbc.password}</value>
        </property>

    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="packagesToScan" value="com.hp.hpl.crowdcloud" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
                <!-- uncomment this for first time run -->
                <prop key="hibernate.hbm2ddl.auto">create</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <tx:annotation-driven />

</beans>

我的 Maven 配置

    <maven.test.failure.ignore>true</maven.test.failure.ignore>
    <org.springframework.version>3.1.0.RELEASE</org.springframework.version>
    <hibernate.version>4.1.1.Final</hibernate.version>
    <sl4j.version>1.5.6</sl4j.version>

请帮助我。我不确定我在哪里犯了错误。


这是由于两个类中的 Id 列所致。从 HumanMicroTask 中删除 Id。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 3.1 Hibernate 4 继承异常 [无法转换为 org.hibernate.mapping.RootClass] 的相关文章

随机推荐

  • 如何知道r在幕后做什么

    作为 R 新用户 我很好奇当我们输入函数时 R 正在做什么 例如 我在类包中使用 knn 函数 我需要做的就是输入 knn 并通过训练和测试数据集进行定义 然后我得到的是测试数据的预测类别 然而 我很好奇是否有办法查看 knn 中的实际方程
  • 仅当单击按钮时显示图像

    刚刚开始学习 HTML 和 Javascript 我有以下代码 它有效 但是 因为我的身体中有一个 img 标签 所以在单击按钮之前它会尝试显示图像的占位符 我怎样才能阻止这个
  • 使用 IIS7 访问 ASP.Net MVC 项目的静态内容

    我在本地 IIS 7 上创建了一个网站 其根目录下有我自己的 ASP Net MVC 项目 除了静态内容之外 一切都工作正常 即将http localhost 8080 Content Site css http localhost 808
  • 表格视图单元格可扩展 iOS

    我想要一个仅包含单元格的表格视图 当您单击单元格时 它应该展开并显示单击单元格的更多信息 我已经看到了很多关于此的主题 但其中大多数都链接到苹果开发人员页面上的表视图动画和手势 这是以不同的方式实现的 他们使用标题部分 但我想使用由于布局原
  • 如何对超时的套接字执行 AcceptAsync?

    这是我现在所拥有的 Socket myNewSocket currentSocket Accept 这就是我想要的 Socket myNewSocket AcceptWithTimeout currentSocket timeoutInMi
  • 从文件夹中删除重复的 Outlook 项目

    issue 当我将项目从在线存档移至 pst 文件时 Outlook 2016 损坏 PST 文件已恢复 但许多项目 7000 被重复 5 次 有一系列项目类型 标准消息 会议请求等 我尝试过什么我查看了现有的解决方案和工具 包括 重复删除
  • 为什么我的 Android 应用程序中的 Azure 表存储数据加载速度缓慢?

    我已经使用 Azure 表存储数据创建了 Android 应用程序 每次我的应用程序 Azure 数据加载缓慢时 我都会打开 我的桌子mBranchListTable mClient getTable BranchList class my
  • XUL 的 jQuery?

    我在互联网上阅读并发现 jQuery 在 XUL 上工作正常 我的问题是 是否有专门为 XUL 设计的 jQuery 插件 还有其他专门为 XUL 制作的类似 jQuery 的库吗 我还没有在 XUL 上测试过 jQuery 我只是出于好奇
  • R - ggplot2 将日期作为 x 轴字符的问题

    我是 R 和 ggplot2 的新手 我不知道如何解决我尝试创建的图表的问题 这是图表目前的样子 我在 x 轴上有日期 但由于某种原因 它们不适用于年份 而只能按月和日排序 这是我正在使用的数据的屏幕截图 正如您所看到的 这里的顺序看起来是
  • 合并 PHP 关联数组

    我有多个arrays我正在努力merge他们 想象一下下面的代码 arr1 a array a b c arr2 a array d e f arr3 a array g h i arr1 b array a b c arr2 b arra
  • Java 数组存储值

    我试图存储在 for 循环结构上输入的值以供以后使用 但它只能在 for 循环结构内部被识别 我需要程序的其余部分识别存储的值 但不知何故我收到错误 找不到符号 public class TryArray public static voi
  • 将 2 列中的精确串联值分组?

    我有一个包含 2 列纬度和经度的表 并且想要对完全匹配进行分组 just tandem2 列上的值 表行 Points Table time lat long 113 2 1 5 8 114 2 1 5 6 Set as Group 115
  • IE7 导致“文本 - 空文本节点”的原因

    我正在使用 IE Web 开发人员工具栏来解决问题 列表项下方出现空白 我无法从逻辑上找出原因 使用网络开发工具栏 我看到在下面的示例 1 中 文本 Google 下方输出了一个 文本 空文本节点 具有讽刺意味的是 在第二个例子中 在 Go
  • Stylecop 配置文件在哪里?

    我已经通过 NuGet 安装了 Stylecop 我希望禁用一些规则 并且我知道这可以通过我读到的配置文件来完成 但是 我在任何地方都找不到该文件 并且似乎很少有文档描述在何处创建该文件 我该如何制作文件 Edit 由于这个问题几年后似乎仍
  • 如何禁用elasticsearch中的自动索引创建?

    我需要禁用一个索引的自动索引创建 但需要允许另一个索引 如何禁用 elasticsearch 仅针对特定索引自动创建索引 我试过 action auto create index false 在elasticsearch yml文件中 但它
  • 如何在grails中安装和使用httpbuilder插件

    如何在 Grails 中安装和使用 httpbuilder 插件 将 httpbuilder 0 5 1 添加到应用程序依赖项将导致错误 特别是 您会收到如下错误 java lang LinkageError loader constrai
  • 如何在 Angular js 中设置 XSRF 保护?

    我正在使用 angularJs 资源和球衣休息 API 开发一个应用程序 我想在我的项目中实现xsrf保护 请建议一个更好的例子 我这里有一个例子 但它使用 ColdFusion http www bennadel com blog 256
  • 有什么命令可以显示 Tomcat 下当前正在运行多少个应用程序?

    想知道有什么命令行工具可以显示 Tomcat 状态吗 您可以在应用程序之外使用大多数管理器应用程序 URL 因此 要生成正在运行的应用程序的列表 您可以发出 wget 在 Linux 中 命令 wget http hostname port
  • Mod 重写尾部斜杠问题

    关于这个主题似乎没有太多信息 所以我将概述我的具体问题 然后也许我们可以将问题和答案塑造成更通用的东西 我有这个重写规则 RewriteEngine On RewriteBase bookkeepers RewriteCond REQUES
  • Spring 3.1 Hibernate 4 继承异常 [无法转换为 org.hibernate.mapping.RootClass]

    嗨 我刚刚开始使用 Spring Hibernate4 和 maven 基本上我的类层次结构是 HUmanMicroTask 从 MicroTask 扩展 将来可能还会有其他几个从 MicroTask 扩展的类 我试图为每个具体类一个表 这