I saw your Thread in http://forum.springframework.org/showthread.php?t=13796, I wrote the AnnotationSessionFactoryBean and change my Spring configurations, but now, I'm geting a error in my application startup, see my config files and the ERROR.
Code:
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.springframework.context.ApplicationContextException;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
public class AnnotationSessionFactoryBean extends LocalSessionFactoryBean {
private static final Logger LOG = Logger.getLogger(AnnotationSessionFactoryBean.class);
private List<String> annotatedClasses_;
/**
* @return the classes.
*/
public List getAnnotatedClasses() {
return annotatedClasses_;
}
/**
* @param classes The classes to set.
*/
public void setAnnotatedClasses(List<String> classes) {
annotatedClasses_ = classes;
}
@Override
protected void postProcessConfiguration(Configuration config) throws HibernateException {
super.postProcessConfiguration(config);
if (!(config instanceof AnnotationConfiguration)) {
throw new ApplicationContextException("The configuration must be AnnotationConfiguration.");
}
if (annotatedClasses_ == null) {
LOG.info("No annotated classes to register with Hibernate.");
return;
}
for (String className : annotatedClasses_) {
try {
Class clazz = config.getClass().getClassLoader().loadClass(className);
((AnnotationConfiguration)config).addAnnotatedClass(clazz);
if (LOG.isDebugEnabled()) {
LOG.debug("Class " + className + " added to Hibernate config.");
}
}
catch (MappingException e) {
throw new ApplicationContextException("Unable to register class " + className, e);
}
catch (ClassNotFoundException e) {
throw new ApplicationContextException("Unable to register class " + className, e);
}
}
}
}
hibernate.cfg.xml
Code:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping class="com.probel.model.sales.PedidoCapa"/>
<mapping class="com.probel.model.sales.PedidoItem"/>
<mapping class="com.probel.model.sales.TabPreco"/>
</session-factory>
</hibernate-configuration>
part of spring-hibernate.cfg
Code:
.
.
.
<bean id="sessionFactory" class="com.home.core.AnnotationSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="configLocation"><value>/WEB-INF/hibernate.cfg.xml</value></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
.
.
.
Error on Application startup
Code:
11:54:54,875 ERROR ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-hibernate.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping clazz="com.probel.model.sales.PedidoCapa"/>
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping clazz="com.probel.model.sales.PedidoCapa"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1322)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1284)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1266)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1233)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1176)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:448)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1075)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:349)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:257)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:146)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:285)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:317)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:131)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:224)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:150)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:48)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3637)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4073)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:909)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:872)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1106)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1019)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1011)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:440)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)