Erro ao tentar deletar, usando Hibernate

Tenho uma JSP que exclui usuários cadastrados

[code]<%
String nome = request.getParameter(“pesquisarUsuario”);
Biblioteca biblioteca = new Biblioteca();
List usuarios = biblioteca.pesquisarUsuarios(nome);

				for (Usuario usuario : usuarios) {
			%>
			<tr>
				<td style="display: none"><%=usuario.getId()%></td>
				<td>- Nome:	</td>
				<td style="width: 220px"><%=usuario.getNome()%></td>
				<td>- Email: </td>
				<td><%=usuario.getEmail()%></td>
				<td>
					<input type="hidden" class="deletausuario" name="deletausuario" value="<%=usuario.getId() %>" />
					<input type="submit" class="enviar" value="Deletar" />		
				</td>
				
			</tr>
			<%
				}
			%>[/code]

Meu método deletar é assim:

public void remove(Usuario usuario) {
		this.session.beginTransaction();
		this.session.delete(usuario);
		this.session.getTransaction().commit();
		this.session.close();
	}

Só que quando vou excluir dá uma exceção

SEVERE: Servlet.service() for servlet Deletar Usuario threw exception
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at com.br.biblioteca.DAO.UsuarioDAO.remove(UsuarioDAO.java:29)
at com.br.biblioteca.biblioteca.Biblioteca.deleteUsuario(Biblioteca.java:81)
at com.br.biblioteca.view.DeletaUsuarioServlet.service(DeletaUsuarioServlet.java:21)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2018)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1449)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
… 23 more

Poderiam ajudar a resolver o problema??

O atributo id do usuario é de que tipo? Primitivo ou Objeto?

Primitivo, ele é do tipo Long

Então seria algo assim

public class Usuario{
 private long id;
//logica aqui
}

Certo?

Troque para objeto

public class Usuario{
 private Long id;
//logica aqui

E tente novamente deletar…

Não não, ele já é assim, como você escreveu, e aí o get e set dele

[code]private Long id;

public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}

[/code]

Caused by: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction

Parece que você já tem um transação ativa antes de executar o delete, então, não vai conseguir executa-lo até encerrar essa transação.