Hibernate: Erro de inserção

Oi pessoal,

Estou estudando Hibernate e usando MySQL. No momento em que o Hibernate tenta fazer uma inserção ele gera a seguinte mensagem:

Alguém tem alguma idéia de como resolver isso?

Bah…

Esse erro tu te puxo! hehehehe

Acho q você já deve ter percebido q o erro é “estouro de memória”.

Pelo q eu vi você tah fazendo um “for de inserts”, correto ??

Se for isso, da uma revisada no seu código. Vê se você não tah populando um mundarel de objetos sem necessidade.

Ah, outra coisa, qual a memória da tua máquina ??

Só por curiosidade

Abraço!

kra tenta colocor no codigo se estiver realmente usando um for e posta o código se ainda tiver problemas

session.flush();

Esqueleto

Infelizmente só estou tentando inserir um único registro.

[code]
package br.com.wincomp.loja;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class incluirAlunos extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;

public incluirAlunos() {
	super();
}   	

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	_do(request, response);
}  	

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	_do(request, response);
}   	  	    

protected void _do(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	int idaluno = 0;
	String nome = request.getParameter("nome");
	String endereco = request.getParameter("endereco");
	String cep = request.getParameter("cep");
	String cidade = request.getParameter("cidade");
	String estado = request.getParameter("estado");
	String pais = request.getParameter("pais");
	
	response.setContentType("text/html;charset=UTF-8");
	PrintWriter out = response.getWriter();
	
	out.println("<html>");
	out.println("<body>");
	
	try{
		SessionFactory sf;
		sf = new Configuration().configure("br/com/wincomp/loja/hibernate.cfg.xml").buildSessionFactory();
	
		Session s = sf.openSession();//Abre sessão
		Transaction tx = s.beginTransaction();//Cria transação
		Alunos a = new Alunos();
		//a.setIdaluno(idaluno);
		a.setNome(nome);
		a.setEndereco(endereco);
		a.setCep(cep);
		a.setCidade(cidade);
		a.setEstado(estado);
		a.setPais(pais);
	
		s.saveOrUpdate(a);
		tx.commit();
		s.close();
		
		out.println("<h2>Operação efetuada com sucesso!</h2>");
	}catch (Exception e){
		out.println("<h2>"+e.getMessage()+"</h2>");
	}
	out.println("<body>");
	out.println("<html>");
	out.close();
}  	

}[/code]
e a página que chama o servlet é:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">
    <jsp:directive.page language="java"
        contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />
    <jsp:text>
        <![CDATA[ <?xml version="1.0" encoding="ISO-8859-1" ?> ]]>
    </jsp:text>
    <jsp:text>
        <![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ]]>
    </jsp:text> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<form action="incluirAlunos" method="post">
<table align="center" border="0">
	<tr>
		<td colspan="2"><center><h2>Cadastro</h2></center></td>
	</tr>
	<tr>
		<td>Nome:</td>
		<td><input type="text" name="nome" maxlength="45" size="45" value="Gilsara" /></td>
	</tr>
	<tr>
		<td>Endereço:</td>
		<td><input type="text" name="endereco" maxlength="45" size="45" value="ABABABABAB" /></td>
	</tr>
	<tr>
		<td>CEP:</td>
		<td><input type="text" name="cep" maxlength="9" size="9" value="999999999" /></td>
	</tr>
	<tr>
		<td>Cidade:</td>
		<td><input type="text" name="cidade" maxlength="45" size="45" value="XXXX" /></td>
	</tr>
	<tr>
		<td>Estado:</td>
		<td><input type="text" name="estado" maxlength="2" size="2" value="JR" /></td>
	</tr>
	<tr>
		<td>Pais:</td>
		<td><input type="text" name="pais" maxlength="45" size="45" value="KONOHA"/></td>
	</tr>
  <tr>
  	<td colspan="2"><center><input type="submit" value="Incluir"/></center></td>
  </tr>
</table>
</form>
</body>
</html>
</jsp:root>

Quando mudei para PostgreSQL funcionou, com algumas alterações (inclusão e sequence no mapeamento).

kra eu uso assim o hbm com MySQL note o generator native, q pra funfar o campo chave tem ser auto_increment no MySQL ai o Hibernate popula automaticamente o id.

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 28/01/2008 10:29:25 by Hibernate Tools 3.2.0.b9 --> <hibernate-mapping> <class name="model.Produto" table="produto" catalog="srmc"> <comment></comment> <id name="idProduto" type="int"> <column name="id_produto" /> <generator class="native" /> </id> <many-to-one name="clienteFornecedor" class="model.ClienteFornecedor" fetch="select"> <column name="id_cliente_fornecedor" not-null="true"> <comment></comment> </column> </many-to-one> <property name="nome" type="string"> <column name="nome" length="50" not-null="true"> <comment></comment> </column> </property> <property name="tipo" type="string"> <column name="tipo" length="2" not-null="true"> <comment></comment> </column> </property> <set name="lotes" inverse="true"> <key> <column name="id_produto" not-null="true"> <comment></comment> </column> </key> <one-to-many class="model.Lote" /> </set> </class> </hibernate-mapping>

e segue tbm o meu cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">admin</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/srmc</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.current_session_context_class">thread</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="model/Login.hbm.xml" />
        <mapping resource="model/Produto.hbm.xml" />
        <mapping resource="model/ClienteFornecedor.hbm.xml" />
        <mapping resource="model/Movimentacao.hbm.xml" />
        <mapping resource="model/Lote.hbm.xml" />
    </session-factory>
</hibernate-configuration>

Eu coloquei <generator class=“native” />também.