Org.hibernate.HibernateException: Unexpected row count: 0 expected: 1

Bom dia pessoal, alguém sabe me falar o pq estou recebendo este erro quando tento persistir os dados utilizando Hibernate… nao tinha tido nenhum problema mais agora estou me deparando com esse erro…

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.hibernate.HibernateException: Unexpected row count: 0 expected: 1
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

br.com.fts.exp.util.DAOException: org.hibernate.HibernateException: Unexpected row count: 0 expected: 1
	br.com.fts.exp.util.BaseDAO.salva(BaseDAO.java:43)
	br.com.fts.exp.action.DespachanteAction.salva(DespachanteAction.java:44)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276)
	org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:196)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
Apache Tomcat/5.5.9

Mostre o código que está dando esse erro.

Essa é minha classe BaseDAO

package br.com.fts.exp.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Criteria;
import org.hibernate.criterion.*;
import org.hibernate.Transaction;

import java.util.Collection;

public abstract class BaseDAO {

	public BaseDAO() {
	}

	protected Collection listaTodos(Class classRef, Criterion[] criterions)
			throws DAOException {
		try {
			Session session = ConnectionFactory.currentSession();
			Criteria crit = session.createCriteria(classRef);
			if (criterions != null) {
				for (int i = 0; i < criterions.length; i++)
					crit.add(criterions[i]);
			}
			Collection c = crit.list();
			ConnectionFactory.closeSession();
			return c;
		} catch (HibernateException e) {
			throw new DAOException(e);
		}
	}

	public void salva(Object object) throws DAOException {
		Transaction tx = null;
		try {
			Session session = ConnectionFactory.currentSession();
			tx = session.beginTransaction();
			session.saveOrUpdate(object);
			session.flush();
			tx.commit();

		} catch (HibernateException e) {
			throw new DAOException(e);
		} finally {
			try {
			} catch (Exception e) {
				e.printStackTrace();
			}

		}

	}

	public void exclui(Object object) throws DAOException {
		Transaction tx = null;
		try {
			Session session = ConnectionFactory.currentSession();
			tx = session.beginTransaction();
			session.delete(object);
			session.flush();
			tx.commit();

		} catch (HibernateException e) {
			throw new DAOException(e);
		} finally {
			try {
			} catch (Exception e) {
				e.printStackTrace();
			}

		}

	}

}

Meu DespachanteDAO

package br.com.fts.exp.dao;

import java.util.Collection;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import br.com.fts.exp.bean.Despachante;
import br.com.fts.exp.util.BaseDAO;
import br.com.fts.exp.util.ConnectionFactory;
import br.com.fts.exp.util.DAOException;

public class DespachanteDAO extends BaseDAO {

	private static DespachanteDAO instance = null;

	public static synchronized DespachanteDAO getInstance() {
		if (instance == null) {
			instance = new DespachanteDAO();
		}
		return instance;
	}

	public DespachanteDAO() {
	}
	
	public void salva () throws DAOException {
		super.salva(Despachante.class);
	}
	
}

Meu Action

package br.com.fts.exp.action;

import java.util.Collection;

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

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;

import br.com.fts.exp.bean.Despachante;
import br.com.fts.exp.dao.DespachanteDAO;

public class DespachanteAction extends DispatchAction {
	public ActionForward salva (ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		DynaActionForm formDinamico = (DynaActionForm) form;
		Despachante despachante = new Despachante();

		despachante.setCodigo((Long) formDinamico.get("codigo"));
		despachante.setNome((String) formDinamico.get("nome"));		

		DespachanteDAO.getInstance().salva(despachante);
		
		formDinamico.reset(mapping, request);

		return mapping.findForward("edita");
	}			
}

Bom, o código que você mostrou não ajuda em nada hehe qual chamada gera o erro?

E acho que é problema de id. No seu bean o id está declarado como tipo primitivo?

Eh LIPE você acerto na mosca mesmo :slight_smile: Valeu pela ajuda pessoal…