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

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

       

      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>