找不到Hibernate-Component类

时间:2016-05-21 05:39:56

标签: java hibernate

我不明白这里发生了什么。这是我得到的例外:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [file:/C:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/demoBancoWeb/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.component.PojoComponentTuplizer]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
.
.
.
Caused by: java.lang.ClassNotFoundException: co.edu.icesi.demo.modelo.ConsignacionesId
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:193)
    at org.hibernate.mapping.Component.getComponentClass(Component.java:138)
    ... 42 more

堆栈跟踪的第一个块是Hibernate异常,第二个跟踪块是与我的类的关系。

该类,ConsignacionesId由Hibernate自动生成为多属性ID。

这是我的hibernate cfg.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
  <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
  <property name="hibernate.connection.password">admin</property>
  <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/banco</property>
  <property name="hibernate.connection.username">postgres</property>
  <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
  <property name="hibernate.search.autoregister_listeners">false</property>
  <property name="show_sql">true</property>
  <mapping resource="co/edu/icesi/demo/modelo/Clientes.hbm.xml"/>
  <mapping resource="co/edu/icesi/demo/modelo/Cuentas.hbm.xml"/>
  <mapping resource="co/edu/icesi/demo/modelo/TiposUsuarios.hbm.xml"/>
  <mapping resource="co/edu/icesi/demo/modelo/TiposDocumentos.hbm.xml"/>
  <mapping resource="co/edu/icesi/demo/modelo/Consignaciones.hbm.xml"/>
  <mapping resource="co/edu/icesi/demo/modelo/Usuarios.hbm.xml"/>
  <mapping resource="co/edu/icesi/demo/modelo/Retiros.hbm.xml"/>

    <mapping resource="co/edu/icesi/demo/modelo/Consultas.hbm.xml"/>

 </session-factory>
</hibernate-configuration>

最后,这是我的Hibernate生成的类:

enter image description here

如您所见,ConsignacionesId就在那里。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

好的,我错过了hibernate hbm.xml文件中我的类的完整路径。

此:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 01-feb-2016 18:51:34 by Hibernate Tools 4.0.0 -->
    <hibernate-mapping>
        <class name="Clientes" table="clientes" schema="public">
            <id name="cliId" type="long">
                <column name="cli_id" precision="10" scale="0" />
                <generator class="assigned" />
            </id>
            <many-to-one name="tiposDocumentos" class=
.
.
.

不得不这样:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 01-feb-2016 18:51:34 by Hibernate Tools 4.0.0 -->
    <hibernate-mapping>
        <class name="co.edu.icesi.demo.modelo.Clientes" table="clientes" schema="public">
            <id name="cliId" type="long">
                <column name="cli_id" precision="10" scale="0" />
                <generator class="assigned" />
            </id>
            <many-to-one name="tiposDocumentos" class="

.
.
.

所以我只是粘贴了“co.edu.icesi.demo.modelo”。在我生成的所有类之前,它都有效。

我希望这有助于某人。

这是因为在“Hibernate Code Generation Cofigurations ...”中我没有使用“package”字段。

“destiny”文件夹应该只是src / main / java。

不要创建自己保存生成的类的包。就我而言,不要创建 co.edu.icesi.demo.modelo

该路径位于“Hibernate代码生成配置...”的“包”字段中