JPA não esta sincronizando com o banco de dados

Pessoa é o seguinte, tenho as seguintes Classes que representam o módulo de entrada do meu sistema, é um módulo mestre detalhe.

Estou com o seguinte problema, vamos supor que tenho uma entrada com 3 itens, se eu remover um item ele retira a quantidade do estoque e remove o item dessa entrada. Blz!!! é isso msm… certinho… Só que se eu fechar o sistema e abrir de novo ou seja ( reconectar com o banco ), o item que foi removido volta para a entrada.

Entrada

[code]@Entity
public class Entrada implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer numero;

@Temporal(TemporalType.DATE)
private Date dataEntrada;

@ManyToOne()
@JoinColumn(name="FORNECEDOR")
private Fornecedor fornecedor;

@OneToMany(mappedBy="entrada", cascade=CascadeType.ALL)	
private List<ItemEntrada> itemEntrada ;	

[/code]

ItemEntrada

[code]@Entity
@IdClass(PKItemEntrada.class)
public class ItemEntrada implements Serializable {

private static final long serialVersionUID = 1L;	

@Id
@Column(insertable=false, updatable=false)
private Integer numero;

@Id	
@Column(name="INSUMO", insertable=false, updatable=false)
private Integer codigoinsumo;

@ManyToOne(targetEntity=Entrada.class)
@JoinColumn(name="NUMERO")		
private Entrada entrada;

@ManyToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="INSUMO")	
private Insumo insumo;

@Column(precision=9, scale=2)
private Double quantidade;
 
@Column(precision=9, scale=2)
private Double valor;

[/code]

essa é minha classe de controle, toda requisição do Entrada.JSP passa por ela:

[code]public class EntradaAction implements IAction {

private EntityManager em ;
private EntityTransaction et;
private Entrada entrada ;

@Override
public void alterar(HttpServletRequest req, HttpServletResponse resp)
		throws Exception {

	try{									
		
		entrada = (Entrada)req.getSession().getAttribute("entrada") ; 
		
		entrada.setFornecedor(new Fornecedor( req.getParameter("codigofornecedor").equals("") ? null : Integer.parseInt( req.getParameter("codigofornecedor") ) ));
		entrada.setDataEntrada( Util.toCalendar(req.getParameter("dataentradaentrada")).getTime() );
		
		req.getSession().setAttribute("entrada", null);
		
		em = JpaUtil.openEntityManager();
		
		et = em.getTransaction();
					
		et.begin();
		
		Dao<Entrada> daoEntrada = Dao.getInstance(em);
		
		daoEntrada.alterar(entrada);	
					
		et.commit();
					
		JpaUtil.closeEntityManager();
		
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() );		
		if (et != null && et.isActive())
			et.rollback();
	}

}

@Override
public void consultar(HttpServletRequest req, HttpServletResponse resp)
		throws Exception {

	try{									
		
		em = JpaUtil.openEntityManager();
		
		et = em.getTransaction();
		et.begin();
					
		Dao<Entrada> daoEntrada = Dao.getInstance(em);
		
		List<Entrada> entradas = null ;
		
		String query = " SELECT a.* FROM Entrada a WHERE numero > 0 " ;
		
		if (Util.isDate( req.getParameter("dataentradaini")))
		   query += " and dataEntrada >= '" + Util.formatData(req.getParameter("dataentradaini"), "yyyy/MM/dd") + "'"  ;			   			
		
		if (Util.isDate( req.getParameter("dataentradafim")))
			query += " and dataEntrada <= '" + Util.formatData(req.getParameter("dataentradafim"), "yyyy/MM/dd") + "'"  ;
		
		if ( req.getParameter("codigofornecedor") != null && !req.getParameter("codigofornecedor").equals("") )
			query += " and fornecedor = " + req.getParameter("codigofornecedor")  ;
		
		entradas = daoEntrada.listar(Entrada.class, query);															
		
		et.commit();
		
		JpaUtil.closeEntityManager();
		
		String retorno = "<div id='barra'><div id='labelnumero'>Número</div><div id='labeldata'>Data</div><div id='labelfornecedor'>Fornecedor</div><div id='labelexcluir'>Excluir</div></div>" ;
	
		if (entradas != null)
			for (int x = 0; x < entradas.size(); x++) {				
				retorno += "<div><a href=\"#\" onclick=\"javascript:carregardiv('pages/entrada.jsp', 'pagina'); javascript:pesquisaobjeto('EntradaAction.do!pesquisarObjeto?numero=" + 
				           entradas.get(x).getNumero() + "'); habilitarElemento('excluir', true);\"> <div id='labelnumero'>" + entradas.get(x).getNumero() + 
				           "</div><div id='labeldata'>" + Util.dateToString( entradas.get(x).getDataEntrada(), "dd/MM/yyyy") + 
				           "</div><div id='labelfornecedor'>" + entradas.get(x).getFornecedor().getNome() + "</div></a>" +
				           "<div id='labelexcluir' onclick=\"if (window.confirm('Confirma excluir o registro ?')) { enviaurl('EntradaAction.do!excluir?numero=" + entradas.get(x).getNumero() + "'); carregardiv('EntradaAction.do!consultar?dataentradaini=" + req.getParameter("dataentradaini") + "&dataentradafim=" + req.getParameter("dataentradafim") + "&codigofornecedor=" + req.getParameter("codigofornecedor")  + "', 'listaconsulta'); }\"><img src='images/del.jpg' alt='Exluir Registro' border='0'/>&nbsp;</img></div></div>";
			}	
						
		resp.getWriter().write(retorno);
								
	}catch(Exception e){			
		resp.getWriter().write("erro" + e.getMessage() );						
		if (et != null && et.isActive())
			   et.rollback();
	}				
	

}

@Override
public void excluir(HttpServletRequest req, HttpServletResponse resp)
		throws Exception {
	
	try{
		
		entrada = (Entrada)req.getSession().getAttribute("entrada");
		
		em = JpaUtil.openEntityManager();
		
		et = em.getTransaction();
					
		et.begin();
		
		Dao<Entrada>daoEntrada = Dao.getInstance(em);
		
		if (entrada == null)											
			entrada = daoEntrada.pesquisar(Entrada.class, Integer.parseInt(req.getParameter("numero")));							
		
		if (entrada.validarItens(entrada.getItemEntrada())){										
		
			daoEntrada.excluir(entrada);
							
			req.getSession().setAttribute("entrada", null);
			
			et.commit();
			
		}else
			et.rollback();						
		
		JpaUtil.closeEntityManager();

		
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() );		
		if (et != null && et.isActive())
			et.rollback();			
	}

}

@Override
public void incluir(HttpServletRequest req, HttpServletResponse resp)
		throws Exception {
	
	try{									
		
		entrada = (Entrada)req.getSession().getAttribute("entrada") ; 
		
		entrada.setFornecedor(new Fornecedor( req.getParameter("codigofornecedor").equals("") ? null : Integer.parseInt( req.getParameter("codigofornecedor") ) ));
		entrada.setDataEntrada( Util.toCalendar(req.getParameter("dataentradaentrada")).getTime() );
		
		req.getSession().setAttribute("entrada", null);
		
		em = JpaUtil.openEntityManager();
		
		et = em.getTransaction();
					
		et.begin();
		
		Dao<Entrada> daoEntrada = Dao.getInstance(em);
		
		daoEntrada.gravar(entrada);	
					
		et.commit();
					
		JpaUtil.closeEntityManager();
		
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() );		
		if (et != null && et.isActive())
			et.rollback();
	}
	
}

@Override
public void pesquisar(HttpServletRequest req, HttpServletResponse resp)
		throws Exception {
	
	try{
		
		if (Util.isDate(req.getParameter("dataentradaentrada"))){
						
			em = JpaUtil.openEntityManager();
		
			et = em.getTransaction();
			
			et.begin();
		
			Dao<Entrada> daoEntrada = Dao.getInstance(em);
		
			List<Entrada> entradas = daoEntrada.listar("entradaPorData", Util.toCalendar(req.getParameter("dataentradaentrada")).getTime());
		
			et.commit();
							
			JpaUtil.closeEntityManager();
		
			String retorno = "<ul id='listaentrada'>" ;
		
			if (entradas != null){
			
				for (Entrada entrada : entradas){
				
					retorno += "<li><a href=\"#\" onclick=\"javascript:pesquisaobjeto('EntradaAction.do!pesquisarObjeto?numero=" + 
		                   	entrada.getNumero() + 
		                   	"'); escondecomponente('listaentrada'); habilitarElemento('excluir', true);\"><div style=\"{float: left; width: 30px;}\">" +
		                   	entrada.getNumero() + "</div><div>" +
		                   	entrada.getFornecedor().getNome() + "</div></a></li>";
				
				}
			
				retorno += "</ul>";
		
				resp.getWriter().write(retorno);
				
			}
			
		}
		
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() ) ;
		if (et != null && et.isActive())
			et.rollback();
		
	}

}

@Override
public void pesquisarObjeto(HttpServletRequest req, HttpServletResponse resp)
		throws Exception {
	
	try{									
		
		em = JpaUtil.openEntityManager();
				
		et = em.getTransaction();

		et.begin();

		Dao<Entrada> daoEntrada = Dao.getInstance(em);

		Entrada entrada = null ;
		List<Entrada> entradas = null ;					
		
		if (Util.isNumeric(req.getParameter("numero")))
			entrada = daoEntrada.pesquisar(Entrada.class, Integer.parseInt(req.getParameter("numero")));
			
		else if (Util.isDate(req.getParameter("numero")))
		    entradas = daoEntrada.listar("entradaPorData", Util.toCalendar(req.getParameter("numero")).getTime() );
			
		et.commit();
		
		//JpaUtil.closeEntityManager();
		
		String retorno = "" ;
		
		if (entradas != null && entradas.size() > 0)
			entrada = entradas.get(0);

		if (entrada != null){
			
			retorno = "numeroentrada|" + entrada.getNumero() + "|" +
					  "dataentradaentrada|" + Util.dateToString(entrada.getDataEntrada(), "dd/MM/yyyy") + "|" +
					  "codigofornecedor|" + entrada.getFornecedor().getCodigo() + "|" +
			          "nomefornecedor|" + entrada.getFornecedor().getNome() + "|DIVdetalhe|" ;
			
			for (ItemEntrada item : entrada.getItemEntrada()){
				
				retorno += "<div style=\"background-color: #7C7C7C;\">"+
	            		   "<div id=\"labelinsumo\">" + item.getInsumo().getDescricao() + "</div>" +
	            		   "<div id=\"labelquantidade\">" + item.getQuantidade() + "</div>" +
	            		   "<div id=\"labelvalor\">" + Util.doubleToStr( item.getValor() ) + "</div></div>"+
	            		   "<div style=\"float:left; margin-left:5px;\" onclick=\"if (window.confirm('Confirma remover o item ?')) carregardiv('EntradaAction.do!remover?codigoinsumo=" + item.getInsumo().getCodigo() +"', 'detalhe'); \"><img src='images/del.jpg' alt='Exluir Registro' border='0'/>&nbsp;</img></div>" ;
			 	 
			}

			retorno += "|" ;
			
			req.getSession().setAttribute("entrada", entrada);

		}
		
		resp.getWriter().write(retorno);
				
					
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() );			
		if (et != null && et.isActive())
			   et.rollback();
	}


}


public void adicionar(HttpServletRequest req, HttpServletResponse resp)
		throws Exception{
	
	try{
					
		Insumo insumo = null ;
		
		if (!req.getParameter("codigoinsumo").equals("")){
			
			em = JpaUtil.openEntityManager();
		
			//et = em.getTransaction();
			//et.begin();
		
			Dao<Insumo> daoInsumo = Dao.getInstance(em);
		
			insumo = daoInsumo.pesquisar(Insumo.class, Integer.parseInt( req.getParameter("codigoinsumo") ) ) ;
			
			//et.commit() ;
			
		}						
		
		entrada = (Entrada)req.getSession().getAttribute("entrada") ;
		
		if (entrada == null) entrada = new Entrada();
		
		ItemEntrada itemEntrada = new ItemEntrada();
		itemEntrada.setEntrada(entrada);
		itemEntrada.setInsumo( insumo ) ;
		itemEntrada.setQuantidade( req.getParameter("quantidadeitementrada").equals("") ? null : Util.strToDouble( req.getParameter("quantidadeitementrada") ) ) ;
		itemEntrada.setValor( req.getParameter("valorinsumo").equals("") ? null : Util.strToDouble( req.getParameter("valorinsumo") ) ) ;
		
		entrada.addItemEntrada(itemEntrada) ;

		String retorno = "" ;
		
		for (ItemEntrada item : entrada.getItemEntrada()){
			
			retorno += "<div style=\"background-color: #7C7C7C;\">"+
            		   "<div id=\"labelinsumo\">" + item.getInsumo().getDescricao() + "</div>" +
            		   "<div id=\"labelquantidade\">" + item.getQuantidade() + "</div>" +
            		   "<div id=\"labelvalor\">" + Util.doubleToStr( item.getValor() ) + "</div></div>"+
            		   "<div style=\"float:left; margin-left:5px;\" onclick=\"if (window.confirm('Confirma remover o item ?')) carregardiv('EntradaAction.do!remover?codigoinsumo=" + insumo.getCodigo() +"', 'detalhe'); \"><img src='images/del.jpg' alt='Exluir Registro' border='0'/>&nbsp;</img></div>" ;
		 	 
		}

		req.getSession().setAttribute("entrada", entrada);
		
		if (!retorno.equals(""))
		   resp.getWriter().write(retorno);
		
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() );
		if ( et != null && et.isActive())
			et.rollback() ;
	}
	
}

public void remover(HttpServletRequest req, HttpServletResponse resp)
		throws Exception{
	
	try{
				
		entrada = (Entrada)req.getSession().getAttribute("entrada") ;
	
		ItemEntrada itemEntrada = new ItemEntrada();
		itemEntrada.setEntrada(entrada);
		itemEntrada.setInsumo( new Insumo( req.getParameter("codigoinsumo").equals("") ? null : Integer.parseInt(req.getParameter("codigoinsumo")) ));
	
		entrada.removerItemEntrada(itemEntrada);
	
		String retorno = "" ;
	
		for (ItemEntrada item : entrada.getItemEntrada()){
		
			retorno += "<div style=\"background-color: #7C7C7C;\">"+
        		   	   "<div id=\"labelinsumo\">" + item.getInsumo().getDescricao() + "</div>" +
        		   	   "<div id=\"labelquantidade\">" + item.getQuantidade() + "</div>" +
        		   	   "<div id=\"labelvalor\">" + Util.doubleToStr( item.getValor() ) + "</div></div>"+
        		   	   "<div style=\"float:left; margin-left:5px;\" onclick=\"if (window.confirm('Confirma remover o item ?')) carregardiv('EntradaAction.do!remover?codigoinsumo=" + item.getInsumo().getCodigo() +"', 'detalhe'); \"><img src='images/del.jpg' alt='Exluir Registro' border='0'/>&nbsp;</img></div>" ;
	 	 
		}

		req.getSession().setAttribute("entrada", entrada);
	
		resp.getWriter().write(retorno);
	}catch(Exception e){
		resp.getWriter().write("erro" + e.getMessage() );
	}
	
}

public void cancelar(HttpServletRequest req, HttpServletResponse resp)
		throws Exception{
	
	try{
		
		em = JpaUtil.openEntityManager();
		et = em.getTransaction();

	    et.begin();
		
		et.rollback();
		
   		JpaUtil.closeEntityManager();
		
		
	}catch(Exception e){
		e.printStackTrace();
	}
	
}

}
[/code]

Se alguém puder me ajudar… por favor… é urgente!!!

valeu!!!

Alguém ??? Por Favor Me Ajudem!!!