Dúvida com Hibernate, Eclipse e JBoss

0 respostas
Andre_Brito

Galera! Uso o JBoss e o Eclipse Galileo. Uso o Hibernate ‘pelo’ JBoss mesmo.

Primeiramente, meu persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="consultant_db"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/DefaultDS</jta-data-source> <class>com.adobe.demo.Consultant</class> <properties> <property name="jboss.entity.manager.jndi.name" value="java:/Manager1"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/Manager1Factory"/> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.url" value="jdbc:mysql://localhost/consultant_db" /> <property name="hibernate.connection.username" value="root" /> <property name="hibernate.connection.password" value="" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <property name="hibernate.connection.pool_size" value="6" /> <property name="hibernate.connection.autoReconnect" value="true" /> <property name="hibernate.generate_statistics" value="false" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.use_sql_comments" value="false" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>

Vou contar uma historinha aqui. A priori, eu tinha usado a Factory do EntityManager (EntityManagerFactory) pra criá-lo e criar a tabela. Quando eu não havia feito o deploy no JBoss, ele criou a tabela (é só uma mesmo) e tudo legal (ou seja, executei como Java Application). Antes, eu não havia colocado o jpa-data-source no persistence.xml. Aí, executando pelo JBoss (já tirando a Factory e usando @PersistenceContext, pois o JBoss é quem vai gerenciar as transações por causa do CMT, né?), uma exception fazia um escândalo e dizia que eu não tinha especificado o DS. Ok.
Umas das dúvidas que tenho é aqui: preciso criar o Data Source para a aplicação ou posso usar o DefaultDS no persistence.xml (ou ainda, o MySqlDS que já vem com o JBoss)? Porque mesmo eu especificando o Data Source do MySQL ou o DefaultDS, ele ainda apresenta aquelas mensagens de que não foi possível achar a tabela Consultant. A mensagem é essa:

21:18:28,569 INFO [SchemaUpdate] updating schema
21:18:28,585 INFO [DatabaseMetadata] table not found: Consultant
21:18:28,585 INFO [DatabaseMetadata] table not found: Consultant
21:18:28,585 ERROR [SchemaUpdate] Unsuccessful: create table Consultant (consultantId bigint not null auto_increment, created datetime not null, firstName varchar(255), lastName varchar(255), ldapName varchar(255) unique, title varchar(255), primary key (consultantId))
21:18:28,585 ERROR [SchemaUpdate] Unexpected token: AUTO_INCREMENT in statement [create table Consultant (consultantId bigint not null auto_increment]
21:18:28,585 INFO [SchemaUpdate] schema update complete

E agora, usando @PersistenceContext, a tabela não é criada. Mesmo quando eu criava a tabela usando a Factory e executava no JBoss, não conseguia achar essa tabela.

Estou fazendo alguma coisa de errado?! Fiquei o dia inteiro praticamente batendo nessa tecla e acho que deve ser algum defeito que eu não estou vendo direito (ou não sei porque não entendo do negócio direito).

Valeu!

Criado 10 de setembro de 2009
Respostas 0
Participantes 1