Rodrigo_Marden 19 de jan. de 2018
Tem erro de sintaxe na sua Query, posta ela ai.
darlan_machado 19 de jan. de 2018
Este erro está associado à forma como você mapeou a(s) entidade(s).
Se quiser, posta aí, tanto a entity quanto a configuração do hibernate.
Macksuel 22 de jan. de 2018
----- Entidade -----
package pacotehibernate;
import javax.persistence.Entity ;
import < a href = "http://javax.persistence.Id" > javax . persistence . Id </ a > ;
import javax.persistence.GeneratedValue ;
@Entity
public class UsuarioHibernate {
@Id
@GeneratedValue
private Long Id ;
private String NomeCompleto ;
private String Email ;
/**
* @return the nomeCompleto
*/
public String getNomeCompleto () {
return NomeCompleto ;
}
/**
* @param nomeCompleto the nomeCompleto to set
*/
public void setNomeCompleto ( String nomeCompleto ) {
NomeCompleto = nomeCompleto ;
}
/**
* @return the email
*/
public String getEmail () {
return Email ;
}
/**
* @param email the email to set
*/
public void setEmail ( String email ) {
Email = email ;
}
/**
* @return the id
*/
public Long getId () {
return Id ;
}
/**
* @param id the id to set
*/
public void setId ( Long id ) {
Id = id ;
}
}
------ persistence.xml -------
<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.jpa.HibernatePersistenceProvider
false
<property name= "javax.persistence.jdbc.driver"
value= "com.mysql.jdbc.Driver" />
<property name= "javax.persistence.jdbc.user"
value= "root" />
<property name= "javax.persistence.jdbc.password"
value= "root" />
<property name= "javax.persistence.jdbc.url"
value= "jdbc:mysql://localhost:3306/cmdooperacional" />
</properties>
----- hibernate.cfg.xml -------
<?xml version="1.0" encoding="UTF-8"?>
com.mysql.jdbc.Driver
root
jdbc:mysql://localhost:3306/cmdooperacional
root
org.hibernate.dialect.MySQLInnoDBDialect
true
false
update
<!-- Livro -->
<mapping class= "pacotehibernate.InsereUsuarioHibernate" />
</session-factory>
darlan_machado 22 de jan. de 2018
Para o MySQL, eu sempre mapeei da seguinte maneira:
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY )
private Long id ;
Aí temos o seguinte, se você está criando as tabelas pelo próprio hibernate, ele criará da seguinte maneira
CREATE TABLE foo (
id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT ,
...
);
Ou algo bem parecido.
Caso contrário, teu banco precisa ter as tabelas criadas mais ou menos da mesma maneira.
No teu mapeamento, como você não especifica a estratégia para o generation type, creio que o hibernate tente, por padrão, utilizar SEQUENCE, que é uma abordagem não usual para o MySQL.
Macksuel 22 de jan. de 2018
Fiz o mapeamento conforme dito, mas apareceu o seguinte erro:
WARN : GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
org . hibernate . tool . schema . spi . CommandAcceptanceException : Error executing DDL via JDBC Statement
at org . hibernate . tool . schema . internal . exec . GenerationTargetToDatabase . accept ( GenerationTargetToDatabase . java : 67 )
at org . hibernate . tool . schema . internal . SchemaDropperImpl . applySqlString ( SchemaDropperImpl . java : 375 )
at org . hibernate . tool . schema . internal . SchemaDropperImpl . applySqlStrings ( SchemaDropperImpl . java : 359 )
at org . hibernate . tool . schema . internal . SchemaDropperImpl . dropFromMetadata ( SchemaDropperImpl . java : 241 )
at org . hibernate . tool . schema . internal . SchemaDropperImpl . performDrop ( SchemaDropperImpl . java : 154 )
at org . hibernate . tool . schema . internal . SchemaDropperImpl . doDrop ( SchemaDropperImpl . java : 126 )
at org . hibernate . tool . schema . internal . SchemaDropperImpl . doDrop ( SchemaDropperImpl . java : 112 )
at org . hibernate . tool . schema . spi . SchemaManagementToolCoordinator . performDatabaseAction ( SchemaManagementToolCoordinator . java : 144 )
at org . hibernate . tool . schema . spi . SchemaManagementToolCoordinator . process ( SchemaManagementToolCoordinator . java : 72 )
at org . hibernate . internal . SessionFactoryImpl .( SessionFactoryImpl . java : 313 )
at org . hibernate . boot . internal . SessionFactoryBuilderImpl . build ( SessionFactoryBuilderImpl . java : 452 )
at org . hibernate . jpa . boot . internal . EntityManagerFactoryBuilderImpl . build ( EntityManagerFactoryBuilderImpl . java : 889 )
at org . hibernate . jpa . HibernatePersistenceProvider . createEntityManagerFactory ( HibernatePersistenceProvider . java : 58 )
at javax . persistence . Persistence . createEntityManagerFactory ( Persistence . java : 55 )
at javax . persistence . Persistence . createEntityManagerFactory ( Persistence . java : 39 )
at pacotehibernate . InsereUsuarioHibernate . main ( InsereUsuarioHibernate . java : 12 )
Caused by : com . mysql . jdbc . exceptions . jdbc4 . MySQLSyntaxErrorException : You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ if exists ’ at line 1
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 : 425 )
at com . mysql . jdbc . Util . getInstance ( Util . java : 408 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 944 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 3973 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 3909 )
at com . mysql . jdbc . MysqlIO . sendCommand ( MysqlIO . java : 2527 )
at com . mysql . jdbc . MysqlIO . sqlQueryDirect ( MysqlIO . java : 2680 )
at com . mysql . jdbc . ConnectionImpl . execSQL ( ConnectionImpl . java : 2480 )
at com . mysql . jdbc . ConnectionImpl . execSQL ( ConnectionImpl . java : 2438 )
at com . mysql . jdbc . StatementImpl . executeInternal ( StatementImpl . java : 845 )
at com . mysql . jdbc . StatementImpl . execute ( StatementImpl . java : 745 )
at org . hibernate . tool . schema . internal . exec . GenerationTargetToDatabase . accept ( GenerationTargetToDatabase . java : 54 )
… 15 more
jan 22 , 2018 9 : 37 : 10 AM org . hibernate . resource . transaction . backend . jdbc . internal . DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO : HHH10001501 : Connection obtained from JdbcConnectionAccess [ org . hibernate . engine . jdbc . env . internal . JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess @698122 b2 ] for ( non - JTA ) DDL execution was not in auto - commit mode ; the Connection ‘ local transaction ’ will be committed and the Connection will be set into auto - commit mode .
jan 22 , 2018 9 : 37 : 10 AM org . hibernate . tool . schema . internal . ExceptionHandlerLoggedImpl handleException
WARN : GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
org . hibernate . tool . schema . spi . CommandAcceptanceException : Error executing DDL via JDBC Statement
at org . hibernate . tool . schema . internal . exec . GenerationTargetToDatabase . accept ( GenerationTargetToDatabase . java : 67 )
at org . hibernate . tool . schema . internal . SchemaCreatorImpl . applySqlString ( SchemaCreatorImpl . java : 440 )
at org . hibernate . tool . schema . internal . SchemaCreatorImpl . applySqlStrings ( SchemaCreatorImpl . java : 424 )
at org . hibernate . tool . schema . internal . SchemaCreatorImpl . createFromMetadata ( SchemaCreatorImpl . java : 315 )
at org . hibernate . tool . schema . internal . SchemaCreatorImpl . performCreation ( SchemaCreatorImpl . java : 166 )
at org . hibernate . tool . schema . internal . SchemaCreatorImpl . doCreation ( SchemaCreatorImpl . java : 135 )
at org . hibernate . tool . schema . internal . SchemaCreatorImpl . doCreation ( SchemaCreatorImpl . java : 121 )
at org . hibernate . tool . schema . spi . SchemaManagementToolCoordinator . performDatabaseAction ( SchemaManagementToolCoordinator . java : 155 )
at org . hibernate . tool . schema . spi . SchemaManagementToolCoordinator . process ( SchemaManagementToolCoordinator . java : 72 )
at org . hibernate . internal . SessionFactoryImpl .( SessionFactoryImpl . java : 313 )
at org . hibernate . boot . internal . SessionFactoryBuilderImpl . build ( SessionFactoryBuilderImpl . java : 452 )
at org . hibernate . jpa . boot . internal . EntityManagerFactoryBuilderImpl . build ( EntityManagerFactoryBuilderImpl . java : 889 )
at org . hibernate . jpa . HibernatePersistenceProvider . createEntityManagerFactory ( HibernatePersistenceProvider . java : 58 )
at javax . persistence . Persistence . createEntityManagerFactory ( Persistence . java : 55 )
at javax . persistence . Persistence . createEntityManagerFactory ( Persistence . java : 39 )
at pacotehibernate . InsereUsuarioHibernate . main ( InsereUsuarioHibernate . java : 12 )
Caused by : com . mysql . jdbc . exceptions . jdbc4 . MySQLSyntaxErrorException : You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ by default as identity ,
Email varchar ( 255 ),
Nome varchar ( 255 ), ’ at line 2
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 : 425 )
at com . mysql . jdbc . Util . getInstance ( Util . java : 408 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 944 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 3973 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 3909 )
at com . mysql . jdbc . MysqlIO . sendCommand ( MysqlIO . java : 2527 )
at com . mysql . jdbc . MysqlIO . sqlQueryDirect ( MysqlIO . java : 2680 )
at com . mysql . jdbc . ConnectionImpl . execSQL ( ConnectionImpl . java : 2480 )
at com . mysql . jdbc . ConnectionImpl . execSQL ( ConnectionImpl . java : 2438 )
at com . mysql . jdbc . StatementImpl . executeInternal ( StatementImpl . java : 845 )
at com . mysql . jdbc . StatementImpl . execute ( StatementImpl . java : 745 )
at org . hibernate . tool . schema . internal . exec . GenerationTargetToDatabase . accept ( GenerationTargetToDatabase . java : 54 )
… 15 more
jan 22 , 2018 9 : 37 : 10 AM org . hibernate . tool . schema . internal . SchemaCreatorImpl applyImportSources
INFO : HHH000476 : Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@476b0ae6’
Digite o Nome Completo do Usuário :
sdasd
Digite o Email do Usuário :
asdasd
jan 22 , 2018 9 : 37 : 13 AM org . hibernate . engine . jdbc . spi . SqlExceptionHelper logExceptions
WARN : SQL Error : 1146 , SQLState : 42 S02
jan 22 , 2018 9 : 37 : 13 AM org . hibernate . engine . jdbc . spi . SqlExceptionHelper logExceptions
ERROR : Table ‘ cmdooperacional . usuariohibernate ’ doesn ’ t exist
jan 22 , 2018 9 : 37 : 13 AM org . hibernate . internal . ExceptionMapperStandardImpl mapManagedFlushFailure
ERROR : HHH000346 : Error during managed flush [ org . hibernate . exception . SQLGrammarException : could not execute statement ]
Exception in thread “ main ” javax . persistence . RollbackException : Error while committing the transaction
at org . hibernate . internal . ExceptionConverterImpl . convertCommitException ( ExceptionConverterImpl . java : 77 )
at org . hibernate . engine . transaction . internal . TransactionImpl . commit ( TransactionImpl . java : 71 )
at pacotehibernate . InsereUsuarioHibernate . main ( InsereUsuarioHibernate . java : 31 )
Caused by : javax . persistence . PersistenceException : org . hibernate . exception . SQLGrammarException : could not execute statement
at org . hibernate . internal . ExceptionConverterImpl . convert ( ExceptionConverterImpl . java : 149 )
at org . hibernate . internal . ExceptionConverterImpl . convert ( ExceptionConverterImpl . java : 157 )
at org . hibernate . internal . ExceptionConverterImpl . convertCommitException ( ExceptionConverterImpl . java : 61 )
… 2 more
Caused by : org . hibernate . exception . SQLGrammarException : could not execute statement
at org . hibernate . exception . internal . SQLExceptionTypeDelegate . convert ( SQLExceptionTypeDelegate . java : 63 )
at org . hibernate . exception . internal . StandardSQLExceptionConverter . convert ( StandardSQLExceptionConverter . java : 42 )
at org . hibernate . engine . jdbc . spi . SqlExceptionHelper . convert ( SqlExceptionHelper . java : 111 )
at org . hibernate . engine . jdbc . spi . SqlExceptionHelper . convert ( SqlExceptionHelper . java : 97 )
at org . hibernate . engine . jdbc . internal . ResultSetReturnImpl . executeUpdate ( ResultSetReturnImpl . java : 178 )
at org . hibernate . dialect . identity . GetGeneratedKeysDelegate . executeAndExtract ( GetGeneratedKeysDelegate . java : 57 )
at org . hibernate . id . insert . AbstractReturningDelegate . performInsert ( AbstractReturningDelegate . java : 42 )
at org . hibernate . persister . entity . AbstractEntityPersister . insert ( AbstractEntityPersister . java : 2919 )
at org . hibernate . persister . entity . AbstractEntityPersister . insert ( AbstractEntityPersister . java : 3490 )
at org . hibernate . action . internal . EntityIdentityInsertAction . execute ( EntityIdentityInsertAction . java : 81 )
at org . hibernate . engine . spi . ActionQueue . executeActions ( ActionQueue . java : 589 )
at org . hibernate . engine . spi . ActionQueue . executeActions ( ActionQueue . java : 463 )
at org . hibernate . event . internal . AbstractFlushingEventListener . performExecutions ( AbstractFlushingEventListener . java : 337 )
at org . hibernate . event . internal . DefaultFlushEventListener . onFlush ( DefaultFlushEventListener . java : 39 )
at org . hibernate . internal . SessionImpl . doFlush ( SessionImpl . java : 1437 )
at org . hibernate . internal . SessionImpl . managedFlush ( SessionImpl . java : 493 )
at org . hibernate . internal . SessionImpl . flushBeforeTransactionCompletion ( SessionImpl . java : 3207 )
at org . hibernate . internal . SessionImpl . beforeTransactionCompletion ( SessionImpl . java : 2413 )
at org . hibernate . engine . jdbc . internal . JdbcCoordinatorImpl . beforeTransactionCompletion ( JdbcCoordinatorImpl . java : 473 )
at org . hibernate . resource . transaction . backend . jdbc . internal . JdbcResourceLocalTransactionCoordinatorImpl . beforeCompletionCallback ( JdbcResourceLocalTransactionCoordinatorImpl . java : 156 )
at org . hibernate . resource . transaction . backend . jdbc . internal . JdbcResourceLocalTransactionCoordinatorImpl . access $ 100 ( JdbcResourceLocalTransactionCoordinatorImpl . java : 38 )
at org . hibernate . resource . transaction . backend . jdbc . internal . JdbcResourceLocalTransactionCoordinatorImpl $ TransactionDriverControlImpl . commit ( JdbcResourceLocalTransactionCoordinatorImpl . java : 231 )
at org . hibernate . engine . transaction . internal . TransactionImpl . commit ( TransactionImpl . java : 68 )
… 1 more
Caused by : com . mysql . jdbc . exceptions . jdbc4 . MySQLSyntaxErrorException : Table ‘ cmdooperacional . usuariohibernate ’ doesn ’ t exist
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 : 425 )
at com . mysql . jdbc . Util . getInstance ( Util . java : 408 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 944 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 3973 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 3909 )
at com . mysql . jdbc . MysqlIO . sendCommand ( MysqlIO . java : 2527 )
at com . mysql . jdbc . MysqlIO . sqlQueryDirect ( MysqlIO . java : 2680 )
at com . mysql . jdbc . ConnectionImpl . execSQL ( ConnectionImpl . java : 2484 )
at com . mysql . jdbc . PreparedStatement . executeInternal ( PreparedStatement . java : 1858 )
at com . mysql . jdbc . PreparedStatement . executeUpdateInternal ( PreparedStatement . java : 2079 )
at com . mysql . jdbc . PreparedStatement . executeUpdateInternal ( PreparedStatement . java : 2013 )
at com . mysql . jdbc . PreparedStatement . executeLargeUpdate ( PreparedStatement . java : 5104 )
at com . mysql . jdbc . PreparedStatement . executeUpdate ( PreparedStatement . java : 1998 )
at org . hibernate . engine . jdbc . internal . ResultSetReturnImpl . executeUpdate ( ResultSetReturnImpl . java : 175 )
… 19 more
darlan_machado 22 de jan. de 2018
Só colocar o log, sem as alterações que fez, fica difícil.
Você está fazendo essa configuração seguindo qual tutorial/livro/apostila?
Macksuel 22 de jan. de 2018
Estou seguindo uma apostila antiga da K19. Tem algum material mais atual que possa me indicar?
Fiz umas modificações no cfg e no persistence. Segue:
package pacotehibernate;
import javax.persistence.Entity ;
import < a href = "http://javax.persistence.Id" > javax . persistence . Id </ a > ;
import javax.persistence.GeneratedValue ;
import javax.persistence.GenerationType ;
@Entity
public class UsuarioHibernate {
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY )
private Long Id ;
private String Nome ;
private String Email ;
/**
* @return the nomeCompleto
*/
public String getNome () {
return Nome ;
}
/**
* @param nomeCompleto the nomeCompleto to set
*/
public void setNomeCompleto ( String nome ) {
Nome = nome ;
}
/**
* @return the email
*/
public String getEmail () {
return Email ;
}
/**
* @param email the email to set
*/
public void setEmail ( String email ) {
Email = email ;
}
/**
* @return the id
*/
public Long getId () {
return Id ;
}
/**
* @param id the id to set
*/
public void setId ( Long id ) {
Id = id ;
}
}
<?xml version="1.0" encoding="UTF-8"?>
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/cmdooperacional
root
root
org.hibernate.dialect.MySQLInnoDBDialect
true
true
create
<!-- Usuário -->
<mapping class= "pacotehibernate.UsuarioHibernate" />
</session-factory>
<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.jpa.HibernatePersistenceProvider
false
<property name= "javax.persistence.jdbc.driver"
value= "com.mysql.jdbc.Driver" />
<property name= "javax.persistence.jdbc.user"
value= "root" />
<property name= "javax.persistence.jdbc.password"
value= "root" />
<property name= "hibernate.default_schema" value= "cmdooperacional" />
<property name= "javax.persistence.jdbc.url"
value= "jdbc:mysql://localhost:3306/cmdooperacional" />
</properties>
darlan_machado 22 de jan. de 2018
Acredito que a K19 tenha material atualizado.
Além disso, creio que a Caelum ainda disponibilize apostilas com esse conteúdo.
Se não, se procurar, encontra até vídeos no youtube com isso.