Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

PROBLEMAS AO RODAR CLASSE PopulaBanco

ERROR: HHH000319: Could not get database metadata java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1041) at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3496) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:813) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193) at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194) at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:503) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750) at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:94) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) at br.com.caelum.livraria.dao.JPAUtil.(JPAUtil.java:10) at br.com.caelum.livraria.dao.PopulaBanco.main(PopulaBanco.java:17) Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:992) ... 28 more

7 respostas

debugando o código percebi que o erro acorre os rodar a instrução: em.getTransaction().begin();

Olá, Mario.

Chegou a alterar alguma linha de código diferente ao proposto no exercício? Está dando erro de casting entre tipos diferentes na linha 17 de PopulaBanco.java:

br.com.caelum.livraria.dao.PopulaBanco.main(PopulaBanco.java:17) Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long.

Não alterei não, única coisa que eu fiz foi criar a base pelo MySql workbench, mas imagino que isso não interfira.

Deletei o projeto, extrai e importei novamente, não sei qual o problema, deve ser no bd...

meu projeto está se chamando livraria-orig, estou achando estranho, será que houve alguma atualização?

Essa linha 17 é o método: EntityManager em = new JPAUtil().getEntityManager();

e dps debugando vi outro erro:

ERROR: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1377) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300) at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1387) at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:62) at br.com.caelum.livraria.dao.PopulaBanco.main(PopulaBanco.java:19) Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:304) at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160) at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1395) at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:59) ... 1 more

solução!

Bom resolvi o problema, baixei o jar : mysql-connector-java-8.0.11.jar, tendo em vista que minha versão do mysql não era a mesma do projeto .zip.

Agora não entendo o por que o projeto não utiliza um gerenciador de dependência como o maven por exemplo.