Problema JPA

21 respostas
OCESN

Boa Tarde a todos, venho pedir que me auxiliem em um problema que estou a dias e não encontrei solução na nuvem. O mais próxima foi a desse post [url]http://www.guj.com.br/posts/list/16800.java[/url]

Seguinte tenha uma arquitetura WEB com JPA, e ao subir o JBoss aparece esse stackTrance

14:39:52,515 INFO [SchemaUpdate] Running hbm2ddl schema update
14:39:52,515 INFO [SchemaUpdate] fetching database metadata
14:39:52,515 ERROR [SchemaUpdate] could not complete schema update
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:168)

........ e aí vai, suprimi o restando do stackTrance, pois o foco é o que está em negrito, e caso alguém achar interessante colocar o restante, por favor, só solicitar.

Dados Relevantes: Servidor JBoss v5.0 Bibliotecas devidamentes configuradas, aparentemente não é esse o problema. Arquivo de configuração persistence.xml presente no META-INF do projeto Web, usuário, senha devidamentes configurados também;
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>  
			<property name="URL" value="jdbc:postgresql://localhost:5432/otavio"/>  
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>

			
			<property name="hibernate.show_sql" value="true"/> 
			<property name="hibernate.connection.username" value="pront_adm" />
			<property name="hibernate.connection.password" value="pront_adm" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.format_sql" value="true" />

Enfim, aguardo ajuda dos companheiros gujeiros.
Abraços!!

21 Respostas

eltonads

Cara…

Não me lembro desse XML de cabeça… mas não deveria ser…

… ou algo assim ali não?

Att.,

bronx

Eu uso uma assim e funciona perfeitamente:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-configuration PUBLIC  
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>  
    <session-factory>  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.url">jdbc:mysql://localhost/meu_bd</property>   
        <property name="hibernate.connection.username">meuUsuario</property> 
        <property name="hibernate.connection.password">minhaSenha</property>  
        <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property>  
        <property name="show_sql">true</property>  
		<property name="format_sql">true</property>

        <mapping class="meu.pacote.MinhaClasse" />
		
     </session-factory>  
</hibernate-configuration>

Só alterar os valores dos parâmetros e testa!

OCESN

Ok Vou fazer dessa forma. Informo o andamento.
Desde já obrigado pela antenção de todos!!

OCESN

bronx:
Eu uso uma assim e funciona perfeitamente:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-configuration PUBLIC  
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>  
    <session-factory>  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.url">jdbc:mysql://localhost/meu_bd</property>   
        <property name="hibernate.connection.username">meuUsuario</property> 
        <property name="hibernate.connection.password">minhaSenha</property>  
        <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property>  
        <property name="show_sql">true</property>  
		<property name="format_sql">true</property>

        <mapping class="meu.pacote.MinhaClasse" />
		
     </session-factory>  
</hibernate-configuration>

Só alterar os valores dos parâmetros e testa!

Não sei se passou despercebido colega bronx, mas estou configurando o persistence.xml.

<?xml version="1.0" encoding="UTF-8"?> <persistence 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" version="1.0"> <persistence-unit name="manager1" transaction-type="JTA">

Essa configuração seria para o hibernate.cfg.xml, certo?, ou o JPA utilizando o hibernate deveria configura-lo? no meu conhecimento acho que não. Apenas configurando o persistence.xml.

Obrigado pela ajuda aí mais uma vez.

OCESN

eltonads:
Cara…

Não me lembro desse XML de cabeça… mas não deveria ser…

… ou algo assim ali não?

Att.,

Valeu pela dica, mas infelizmente ainda persiste o problema.
Obrigado pela atenção!!

Andre_Brito

Posta seu persistence.xml inteiro pra gente ver.
E a url do seu banco parece estar errada, como o eltonads falou.

OCESN

Ops!! Aí está!!

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;persistence 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"
	version="1.0"&gt;
	&lt;persistence-unit name="manager1" transaction-type="JTA"&gt;
		&lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
		&lt;jta-data-source&gt;ctrAcessDataSource&lt;/jta-data-source&gt;
		&lt;class&gt;br.com.ota.ctracessbusiness.entity.usuario.Usuario&lt;/class&gt;
		&lt;exclude-unlisted-classes&gt;true&lt;/exclude-unlisted-classes&gt;
		
		&lt;properties&gt;
			&lt;property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/&gt;  
			&lt;property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/otavio"/&gt;  
			&lt;property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/&gt;

			
			&lt;property name="hibernate.show_sql" value="true"/&gt; 
			&lt;property name="hibernate.connection.username" value="pront_adm" /&gt;
			&lt;property name="hibernate.connection.password" value="pront_adm" /&gt;
			&lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt;
			&lt;property name="show_sql" value="true"/&gt;    
	                &lt;property name="format_sql" value="true"/&gt; 
		
		&lt;/properties&gt;
	&lt;/persistence-unit&gt;
&lt;/persistence&gt;
OCESN

E aí galera… alguém mais para nos ajudar?

Paulo_Silveira

experimenta tirar o name=“manager1”

OCESN

Ops… acho que não. Conforme a documentação tenho que especificar o name para o persistence-unit.
Abraços!

ctdaa

Eu utilizo dois arquivos de configuração: /src/conf/persistence.xml e o /src/java/hibernate.cfg.xml
Faz diferença?
Exemplo:

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="facePetsPU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/petcatalog</jta-data-source>
    <class>com.pet.model.Address</class>
    <class>com.pet.model.Category</class>
    <class>com.pet.model.Item</class>
    <class>com.pet.model.Product</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/petcatalog</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">xxxx</property>
    <property name="hibernate.transaction.auto_close_session">true</property>
    <property name="hibernate.transaction.flush_before_completion">true</property>
    <property name="hibernate.connection.release_mode">auto</property>
  </session-factory>
</hibernate-configuration>
T

Não lembro como configurar certinho pro jboss, mas acho que o seu persistence.xml está errado. Se não estou enganado pra usar JTA tem que utilizar um DS criado pelo container.

Paulo_Silveira

OCESN:
Ops… acho que não. Conforme a documentação tenho que especificar o name para o persistence-unit.
Abraços!

oi ocesn

algumas implementacoes de jpa no container te obrigam a passar o unitName do persistencecontext se voce deu nome aos bois, mesmo que so haja uma unica definicao de persistenceunit! por isso falei pra voce testar sem

OCESN

Opa… beleza… Paulo Silveira.
Não sabia… irá para a base de conhecimento.
Obrigado pela atenção!!

OCESN

Para o persistence.xml já revi e revi ele aparentemente não me parece errado.
E para o DS criado pelo container qual seria? Então?

T

Fica na pasta deploy do seu servidor. Faz um bom tempo que não trabalho com o JBoss, mas lembro que existia uma pasta de documentação que continha exemplos para criação de DataSources. Dê um procurada lá e crie um DS pelo JBoss.

OCESN

Opa tinha esquecido, tem sim a configuração do DS e segue ele abaixo;

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE datasources
    PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd"&gt;
&lt;datasources&gt;
   
   &lt;local-tx-datasource&gt;
      &lt;jndi-name&gt;ctrAcessDataSource&lt;/jndi-name&gt;
      &lt;use-java-context&gt;true&lt;/use-java-context&gt;
      &lt;connection-url&gt;jdbc:postgresql://localhost:5432/otavio&lt;/connection-url&gt;
      &lt;driver-class&gt;org.postgresql.Driver&lt;/driver-class&gt;
      &lt;user-name&gt;pront_adm&lt;/user-name&gt;
      &lt;password&gt;pront_adm&lt;/password&gt;
   &lt;/local-tx-datasource&gt;
    
&lt;/datasources&gt;
T

no seu persistence tenta com isso:

<jta-data-source>java:/ctrAcessDataSource</jta-data-source>
OCESN

Nada companheiro. Mesma Mensagem!!

Obrigado pela atenção!!

OCESN

Ola pessoal… alguém mais poderia contribuir para a solução do problema?

OCESN

Opa… Colegas e Amigos do Guj, obrigado pela atenção, mas consegui resolver o problema aqui. O problema?, ou melhor uns dos problemas é a não atualização do eclipse/códigos no JBoss, ele estava mantendo lixo de deploys anteriores…affff… e com isso gerava o mesmo problema, sempre…

Obrigado e até a próxima!!!

Criado 25 de setembro de 2009
Ultima resposta 19 de out. de 2009
Respostas 21
Participantes 7