JPA - The user must supply a JDBC connection

olá pessoal estou vendo as video aulas Desenvolvendo uma aplicação completa JPA, estou com o seguinte problema. segue o erro abaixo.

alguem pode me ajudar?

[code]
estcase: testAddUser(br.com.mycompletejpawebapp.dao.UserDAOTest): Caused an ERROR
The user must supply a JDBC connection
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)
at br.com.mycompletejpawebapp.dao.UserDAO.addUser(UserDAO.java:24)
at br.com.mycompletejpawebapp.dao.UserDAOTest.testAddUser(UserDAOTest.java:53)

Testcase: testUpdateUser(br.com.mycompletejpawebapp.dao.UserDAOTest): Caused an ERROR
The user must supply a JDBC connection
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)
at br.com.mycompletejpawebapp.dao.UserDAO.updateUser(UserDAO.java:33)
at br.com.mycompletejpawebapp.dao.UserDAOTest.testUpdateUser(UserDAOTest.java:68)

Testcase: testGetUser(br.com.mycompletejpawebapp.dao.UserDAOTest): Caused an ERROR
The user must supply a JDBC connection
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntity(JPAUtil.java:58)
at br.com.mycompletejpawebapp.dao.UserDAO.getUser(UserDAO.java:41)
at br.com.mycompletejpawebapp.dao.UserDAOTest.testGetUser(UserDAOTest.java:81)

Testcase: testRemoveUser(br.com.mycompletejpawebapp.dao.UserDAOTest): Caused an ERROR
The user must supply a JDBC connection
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)
at br.com.mycompletejpawebapp.dao.UserDAO.removeUser(UserDAO.java:45)
at br.com.mycompletejpawebapp.dao.UserDAOTest.testRemoveUser(UserDAOTest.java:96)

Testcase: testRemoveById(br.com.mycompletejpawebapp.dao.UserDAOTest): Caused an ERROR
The user must supply a JDBC connection
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)
at br.com.mycompletejpawebapp.dao.UserDAO.addUser(UserDAO.java:24)
at br.com.mycompletejpawebapp.dao.UserDAOTest.testRemoveById(UserDAOTest.java:114)

Testcase: testGetAllUsers(br.com.mycompletejpawebapp.dao.UserDAOTest): Caused an ERROR
The user must supply a JDBC connection
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)
at br.com.mycompletejpawebapp.util.JPAUtil.getList(JPAUtil.java:43)
at br.com.mycompletejpawebapp.dao.UserDAO.getAllUsers(UserDAO.java:59)
at br.com.mycompletejpawebapp.dao.UserDAOTest.testGetAllUsers(UserDAOTest.java:129)

Test br.com.mycompletejpawebapp.dao.UserDAOTest FAILED
C:\devmedia\jpacompleteexample2\nbproject\build-impl.xml:955: Some tests failed; see details above.
FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)[/code]

O JPA está reclamando que não existe conexão aberta.

Você está abrindo a transação?

estou abrindo a conexão no método getEntityManager, está correto?

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.mycompletejpawebapp.util;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
*

  • @author Administrador
    */
    public class JPAUtil {

    private static JPAUtil me;
    private EntityManagerFactory emf;

    private JPAUtil() {
    emf = Persistence.createEntityManagerFactory(“exemplo”);
    }

    public static JPAUtil getInstance(){
    if(me == null){
    me = new JPAUtil();
    }
    return me;
    }
    public EntityManager getEntityManager(){
    EntityManager toReturn = emf.createEntityManager();
    toReturn.getTransaction().begin();
    return toReturn;
    }
    @SuppressWarnings(“unchecked”)
    public List getList(Class classToCast, String jpql, Object… parameters){
    List toReturn = null;
    EntityManager em = getEntityManager();

    Query qr = em.createQuery(jpql);

    for (int i = 0; i < parameters.length; i++) {
    qr.setParameter(i+1, parameters[i]);
    }
    toReturn = qr.getResultList();
    em.getTransaction().commit();
    em.close();

    return toReturn;
    }

public T getEntity(Class entityClass, Serializable pk){
EntityManager em = getEntityManager();
T toReturn = em.find(entityClass, pk);
em.getTransaction().commit();
em.close();
return toReturn;
}

}[/code]

Repare que o erro acontece na linha: at br.com.mycompletejpawebapp.util.JPAUtil.getEntityManager(JPAUtil.java:37)

Você configurou o datasource correto?

Dá algum erro quando você inicia a aplicação?

acho q não. onde eu configuro o datasource ?

[quote=tiagostrokes]acho q não.[/quote] Então você precisa ter certeza.

Onde você configurou o caminho do banco e senha?
Nenhum erro acontece antes desse?

configurei em um 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="exemplo"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.hbm2ddl.auto" value="UPDATE" />
            <property name="hibernate.show_sql" value="true" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/jpacompleteexample" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />
        </properties>
    </persistence-unit>
</persistence>

alguem pode ajudar?

Posta o método addUser aí.

segue o metodo, vlw obrigado pela por ajudar

[code] public Integer addUser(User usr){
EntityManager em = JPAUtil.getInstance().getEntityManager();
em.persist(usr);
em.getTransaction().commit();
em.close();
return usr.getId();

}[/code]

É cara, ñ consigo imagina oq possa estar acontecendo. Sorry. Talvez outra pessoa possa te ajudar.

Boa sorte

Post velho, mas como topei com isso, fica aí a resposta: se usar jdbc direto com entitymanager, use as propriedades “hibernate.connection” em vez de “javax.persistence”, algumas configs (ao menos nos hibernate 3.X) não se habilitam completamente ao usar a JPA padrão. Possivelmente precise configurar outras mais para usar javax.persistence nesse caso