Reputation: 2598
I don't understand what is going on here. This is the exception I'm getting:
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
The first block of stack trace is the Hibernate exception and the second block of trace is the relation with my classes.
That class, ConsignacionesId was automatically generated by Hibernate as a multi-attribute ID.
This is my 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>
And finally, this are my classes generated by Hibernate:
As you can see, ConsignacionesId IS there. Any help is appreciated.
Upvotes: 0
Views: 2207
Reputation: 2598
Ok, I was missing the complete path to my classes inside the hibernate hbm.xml files.
This:
<?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=
.
.
.
Had to look like this:
<?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="
.
.
.
So I just pasted "co.edu.icesi.demo.modelo." before all my generated classes, and it worked.
I hope this helps somebody.
This happened because in the "Hibernate Code Generation Cofigurations..." I DID NOT use the field "package".
The "destiny" folder should be only src/main/java.
Don't create the package that will hold your generated classes by yourself. In my case, don't create co.edu.icesi.demo.modelo.
That path goes inside the "package" field of "Hibernate Code Generation Configurations..."
Upvotes: 3