Boa Noite, estou já há um bom tempo apanhando com as pilhas de exceção. Se algúem puder dar uma luz… Seguem os arquivos:
persistence.xml
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="notas" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.caelum.notasfiscais.modelo.Item</class>
<class>br.com.caelum.notasfiscais.modelo.NotaFiscal</class>
<class>br.com.caelum.notasfiscais.modelo.Produto</class>
<class>br.com.caelum.notasfiscais.modelo.Usuario</class>
<properties>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver" />
<property name="hibernate.connection.url"
value="jdbc:oracle:thin:@localhost:1521:notasfiscais" />
<property name="hibernate.connection.username" value="system" />
<property name="hibernate.connection.password" value="admin" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
</properties>
</persistence-unit>
</persistence>
Teste.java
public class Teste {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DAO<Produto> dao = new DAO<Produto>(Produto.class);
Produto produto = new Produto();
produto.setDescricao("Descricao do Produto");
produto.setNome("Nome do Produto");
produto.setPreco(14.3);
dao.adiciona(produto);
}
}
Produto.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Produto {
@Id @GeneratedValue
private Long id;
private String nome;
private String descricao;
private Double preco;
//getters and setters
Método adiciona da classe DAO
public void adiciona(T t) {
//consegue a entity manager
EntityManager em = new JPAUtil().getEntityManager();
//abre transacao
em.getTransaction().begin();
//persiste o objeto
em.persist(t);
//commita a transacao
em.getTransaction().commit();
//fecha a entity manager
em.close();
}
JPAUtil.java
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("notas");
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
}
e, por fim, a exceção:
log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
Exception in thread “main” javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1215)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1148)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1225)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:63)
at br.com.caelum.notasfiscais.dao.DAO.adiciona(DAO.java:19)
at br.com.caelum.notasfiscais.teste.Teste.main(Teste.java:18)
Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60)
… 2 more
Caused by: java.sql.SQLRecoverableException: IO Error: Got minus one from a read call
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:536)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
… 7 more
Caused by: oracle.net.ns.NetException: Got minus one from a read call
at oracle.net.ns.Packet.receive(Packet.java:286)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308)
… 15 more
Desculpem pelo excesso de linhas, mas já “googlei” bastante e os erros só estão mudando, alguém pode dar um help, depois desse abuso de linhas??
Vlw!!!
, bons estudos