javax.servlet.ServletException: org.hibernate.exception.GenericJDBCException: could not execute statement

4 respostas
javahibernate
R

Ao tentar testar gravar um registro no banco usando postman ocorre o seguinte erro:

Type Exception Report

Message org.hibernate.exception.GenericJDBCException: could not execute statement

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: org.hibernate.exception.GenericJDBCException: could not execute statement

org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:487)

org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause
org.hibernate.exception.GenericJDBCException: could not execute statement

org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)

org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)

org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)

org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:211)

org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)

org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)

org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032)

org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558)

org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98)

org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:492)

org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:197)

org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:181)

org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:216)

org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:334)

org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289)

org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195)

org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126)

org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)

org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)

org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)

org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)

org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)

org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715)

org.hibernate.internal.SessionImpl.save(SessionImpl.java:707)

org.hibernate.internal.SessionImpl.save(SessionImpl.java:702)

br.com.servico.dao.GenericDAO.salvar(GenericDAO.java:29)

br.com.servico.service.MensagemService.enviarMensagem(MensagemService.java:56)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

java.lang.reflect.Method.invoke(Method.java:498)

org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)

org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)

org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)

org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)

org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)

org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)

org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)

org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)

org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)

org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)

org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)

org.glassfish.jersey.internal.Errors.process(Errors.java:315)

org.glassfish.jersey.internal.Errors.process(Errors.java:297)

org.glassfish.jersey.internal.Errors.process(Errors.java:267)

org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)

org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)

org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)

org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471)

org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause
java.sql.SQLException: Field grupo doesnt have a default value

com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)

com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447)

com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)

com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901)

com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2113)

com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2049)

com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2034)

org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)

org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)

org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)

org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032)

org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558)

org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98)

org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:492)

org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:197)

org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:181)

org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:216)

org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:334)

org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289)

org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195)

org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126)

org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)

org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)

org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)

org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)

org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)

org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715)

org.hibernate.internal.SessionImpl.save(SessionImpl.java:707)

org.hibernate.internal.SessionImpl.save(SessionImpl.java:702)

br.com.servico.dao.GenericDAO.salvar(GenericDAO.java:29)

br.com.servico.service.MensagemService.enviarMensagem(MensagemService.java:56)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

java.lang.reflect.Method.invoke(Method.java:498)

org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)

org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)

org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)

org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)

org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)

org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)

org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)

org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)

org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)

org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)

org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)

org.glassfish.jersey.internal.Errors.process(Errors.java:315)

org.glassfish.jersey.internal.Errors.process(Errors.java:297)

org.glassfish.jersey.internal.Errors.process(Errors.java:267)

org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)

org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)

org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)

org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471)

org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Classe modelo:

@SuppressWarnings(serial)

@Entity

public class Mensagem extends GenericDomain {
@Column(length = 60, nullable = false)
private Usuario usuario;

@ManyToOne
@JoinColumn()
private Grupo grupo;

@Column(length = 60, nullable = false)
private String mensagem;

@Temporal(TemporalType.TIMESTAMP)
private Calendar postagem;

@Column(nullable = false)
private Integer contadorSpam = 0;

public Mensagem() {
}

Meu teste:

@Test
public void gerarJson() {
	
	Gson gson = new Gson();
	
	Mensagem mensagem = new Mensagem();
	Grupo grupo = new Grupo();
	GrupoDAO grupodao = new GrupoDAO();
	grupo = grupodao.buscar(1L);
	
	
	mensagem.setContadorSpam(0);
	mensagem.setGrupo(grupo);
	mensagem.setMensagem("MEnsagem de teste 123");
	mensagem.setPostagem(Calendar.getInstance());
	mensagem.setUsuario(grupo.getModerador());
	
	String mensagemJson = gson.toJson(mensagem);
	
	System.out.println(mensagemJson);

}

}

4 Respostas

R

arquivo json que tento enviar:

{usuario:

{

nome:Nuala,

sobreNome:Morita,

<a>email:"[email removido]</a>",

senha:123,curso:ADS,

semestre:6,

codigo:4

}

,grupo:

{

nomeGrupo:TesteGrupo,

nomeMateria:TesteMateria,

notaGrupo:0.0,

moderador:

{nome:Nuala,

sobreNome:Morita,

<a>email:"[email removido]</a>",

senha:123,

curso:ADS,

semestre:6,

codigo:4

}

,codigo:2

},

mensagem:MEnsagem de teste 123,

postagem:{

year:2019,

month:9,

dayOfMonth:18,

hourOfDay:10,

minute:32,

second:30

},

contadorSpam:0

}
S

O campo grupo está null

Sua busca deve estar retornando null

R

Mas eu estou testando pelo Postman usando Json, que coloquei depois e está preenchido, até onde entendo

R

Após apagar tabela e fazer hibernate criar novamente funcionou.

Criado 18 de outubro de 2019
Ultima resposta 18 de out. de 2019
Respostas 4
Participantes 2