Fala galera tudo bem?
Estou estudando JSF com JPA através de um livro, estou no tópico de criação da tabela no banco MySQL através da minha classe de entidade. Estou usando a IDE NetBeans 7.3. Criei no meu projeto JSF, o arquivo persistence.xml no classpath, declarei as tags de configuração, porém quando utilizo propriedades que incluam <property name="javax.persistence.jdbc... a minha aplicação apresenta o seguinte erro quando rodo a classe main de teste:
Exception in thread "main" java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:30)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.caelum.projetoebook.automoveis.teste.PersistidorDeAutomoveis.main(PersistidorDeAutomoveis.java:27)
Java Result: 1
Quando utilizo propriedades do Hibernate como <property name="hibernate.connection... a aplicação roda normalmente.
Como estou estudando Hibernate, está tudo bem por eu usar as bibliotecas do Hibernate, mais por curiosidade, gostaria de saber como vou conseguir rodar essa aplicação utilizando a da biblioteca javax.persistence. Testei as bibliotecas JPA do Netbeans nenhuma funcionou.
Segue como está a minha estrutura que apresenta o erro:
PERSISTENCE.XML:
<persistence>
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/automoveis"/>
<property name="javax.persistence.jdbc.username" value="root"/>
<property name="javax.persistence.jdbc.password" value="*****"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
MINHA CLASSE MAIN QUE RODA O TESTE:
package br.com.caelum.projetoebook.automoveis.teste;
import br.com.caelum.projetoebook.automoveis.Automovel;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
public class PersistidorDeAutomoveis {
public static void main(String [] args){
EntityManagerFactory emg = Persistence.createEntityManagerFactory("default");
EntityManager em = emg.createEntityManager();
Automovel auto = new Automovel();
auto.setAnoFabricacao(2010);
auto.setModelo("Ferrari");
auto.setObservacoes("Nunca foi batido");
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(auto);
tx.commit();
em.close();
emg.close();
}
}
Obrigado desde já!