Seam with 2 datasources (Postgres+MySQL)
manuel_fidalgo Oct 31, 2007 12:32 PMHello, Im working with SEAM 1.2.1 and I have two datasources: one is from a Postgres database (and works fine) and the other one is for a MySQL database ('WP7Datasource', which doesn't work).
The problem is that when I start JBoss i get this error:
16:58:20,968 INFO [SessionFactoryImpl] building session factory
17:08:39,718 WARN [ServiceController] Problem starting service persistence.units:ear=medieq-aqua.ear,jar=medieq-aqua.jar,unitName=WP7Datasource
javax.persistence.PersistenceException: org.hibernate.MappingException: could not instantiate id generator
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:695)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:127)
at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:264)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
...
Caused by: org.hibernate.MappingException: could not instantiate id generator
at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:98)
at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:152)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:192)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1218)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:688)
... 147 more
Caused by: org.hibernate.MappingException: Dialect does not support sequences
at org.hibernate.dialect.Dialect.getSequenceNextValString(Dialect.java:570)
at org.hibernate.id.SequenceGenerator.configure(SequenceGenerator.java:65)
at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:43)
at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:94)
....
the datasources are defined here:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>medieqDatasource</jndi-name> <connection-url> jdbc:postgresql://localhost:5432/medieqdev </connection-url> <driver-class>org.postgresql.Driver</driver-class> <user-name>****</user-name> <password>****</password> <connection-property name="char.encoding"> UTF-8 </connection-property> <transaction-isolation> TRANSACTION_READ_COMMITTED </transaction-isolation> <min-pool-size>25</min-pool-size> <max-pool-size>100</max-pool-size> <blocking-timeout-millis>5000</blocking-timeout-millis> <idle-timeout-minutes>15</idle-timeout-minutes> <prepared-statement-cache-size> 75 </prepared-statement-cache-size> </local-tx-datasource> <!-- add datasource for UMLS MYSQL database (Manuel Fidalgo)--> <local-tx-datasource> <jndi-name>WP7Datasource</jndi-name> <connection-url>jdbc:mysql://localhost/umls</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>***</user-name> <password>***</password> <connection-property name="char.encoding">UTF-8</connection-property> <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> <min-pool-size>25</min-pool-size> <max-pool-size>100</max-pool-size> <blocking-timeout-millis>5000</blocking-timeout-millis> <idle-timeout-minutes>15</idle-timeout-minutes> <prepared-statement-cache-size>75</prepared-statement-cache-size> <metadata> <type-mapping>mySQL</type-mapping></metadata> </local-tx-datasource> </datasources>
and the persistence.xml is this:
<persistence> <persistence-unit name="medieqDatasource"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/medieqDatasource</jta-data-source> <properties> <!-- create-drop --> <property name="hibernate.hbm2ddl.auto" value="validate"/> <property name="hibernate.show_sql" value="true"/> <!-- These are the default for JBoss EJB3, but not for HEM: /--> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/medieqEntityManagerFactory"/> </properties> </persistence-unit> <!-- MySQL UMLS database Manuel Fidalgo --> <persistence-unit name="WP7Datasource"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/WP7Datasource</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="validate" /> <property name="hibernate.cache.use_query_cache" value="true" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <property name="hibernate.connection.username" value="***" /> <property name="hibernate.connection.password" value="***" /> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.url" value="jdbc:mysql://localhost/umls" /> <property name="jboss.entity.manager.factory.jndi.name" value="java:/WP7EntityManagerFactory" /> <property name="hibernate.jdbc.use_get_generated_keys" value="false" /> </properties> </persistence-unit> </persistence>
Both databases are working and I can connect to them via JDBC. I have no entities for the MySQL database but is should work...I think that the problem is that the configuration forces MySQL to use id generators and it doesnt work but I don't know why it uses this generators and if I could turn off this feature (only for MySQL)... Any help will be apreciated...
thanks