0 Replies Latest reply on Jun 15, 2010 11:24 AM by Chris Stepnitz

    JBoss 5.0 and 5.1 MySql-Hibernate Dialect Class Cast error--works in JBoss 4.2.3

    Chris Stepnitz Newbie

       

      Hi,


      I'm trying to migrate my application to JBoss 5.1 or  JBoss 5.0.1 from JBoss 4.2.3, and I'm having some issues with the hibernate-to-mysql database  connection.  Both new versions of JBoss give me the same  error, while the same configuration works in JBoss 4.2.3.


      In short, I've successfully set up a data source  connection and jndi name for my war to a local mysql database.  My app itself uses hibernate to  'talk' to the database, and on deployment I get a ClassCast exception stating that  the default MySql dialect doesn't extend the right class (but it does!).   "Caused by: java.lang.ClassCastException:  org.hibernate.dialect.MySQLDialect  cannot be cast to  org.hibernate.dialect.Dialect"

       

      I'm mystified.  Any guesses?  Details  below.

       


      Stack Trace:


      08:32:31,453 INFO  [Version] Hibernate Commons  Annotations 3.1.0.GA
      08:32:31,453 INFO  [Version] Hibernate EntityManager  3.4.0.GA
      08:32:31,500 INFO  [Ejb3Configuration] Processing  PersistenceUnitInfo [
              name: MyPersistence
               ...]
      08:32:31,546 WARN  [Ejb3Configuration] Persistence provider caller does  not impl
      ement the EJB3 spec correctly.  PersistenceUnitInfo.getNewTempClassLoader() is null.
      08:32:31,625 INFO   [HibernateSearchEventListenerRegister] Unable to find  org.hibernate.search.event.FullTextIndexEventListener on the classpath.  Hibernate Search is not enabled.
      08:32:31,640 INFO   [InjectedDataSourceConnectionProvider] Using provided datasource
      08:32:32,093  ERROR [AbstractKernelController] Error installing to Start:  name=persistence.unit:unitName=#MyPersistence  state=Create
      javax.persistence.PersistenceException: [PersistenceUnit:  MyPersistence] Unable to build EntityManagerFactory
              at  org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
               at  org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132)
               at  org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:301)
               at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
               at  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
               at java.lang.reflect.Method.invoke(Method.java:597)
              at  org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
               at  org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
               at  org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
               at  org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
               at  org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
               at  org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
               at  org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
               at  org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
               at  org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
               at  org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
               at  org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
               at  org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
               at  org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
               at  org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
               at  org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
               at  org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)

               [CUT HERE FOR LENGTH]

      Caused by: org.hibernate.HibernateException: Could  not instantiate dialect class
              at  org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:84)
               at  org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:66)
               at  org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
               at  org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
               at  org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
               at  org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
               at  org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
               at  org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
               at  org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
               ... 61 more
      Caused by: java.lang.ClassCastException:  org.hibernate.dialect.MySQLDialect cannot be cast to  org.hibernate.dialect.Dialect
              at  org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:78)
               ... 69 more
              08:32:34,234 INFO  [TomcatDeployment] deploy,  ctxPath=/myCtx

      08:33:03,250 INFO  [[/myCtx]] Initializing log4j from  [classpath:log4j.xml]
      08:33:03,281 INFO  [[/myCtx]] Initializing Spring root  WebApplicationContext

       

      My Data Source:

      <?xml version="1.0"  encoding="UTF-8"?>

      <datasources>

         <local-tx-datasource>
             <jndi-name>MyPersistence</jndi-name>
             <jta-data-source>MyPersistence</jta-data-source>

             <connection-url>jdbc:mysql://localhost:3306/myApp</connection-url>

             <driver-class>com.mysql.jdbc.Driver</driver-class>

             <user-name>FAKEUSER</user-name>
             <password>FAKEPASSWORD</password>

             <min-pool-size>5</min-pool-size>

             <max-pool-size>20</max-pool-size>
             <idle-timeout-minutes>0</idle-timeout-minutes>

            <track-statements/>

            <application-managed-security/> 

             <prepared-statement-cache-size>32</prepared-statement-cache-size>

          </local-tx-datasource>
      </datasources>


      My Persistence.xml in my.war

      <persistence xmlns="http://java.sun.com/xml/ns/persistence"  version="1.0">
           <persistence-unit  transaction-type="JTA">
                <jta-data-source>java:/MyPersistence</jta-data-source> 
            </persistence-unit>
      </persistence>