[Resolvido] Contexto de persistência

Galera,

Mais um teste aqui na especificação EJB/JPA.

Seguinte,

Um obeto/entidade que ainda não está gerenciado pelo contexto deve receber um erro ao tentar executar uma operação do tipo merge, ok?

Segue um exemplo do teste (mais uma vez, código cheio de “marreta”, só pra teste hehehe)

public class ClienteServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@EJB
	private ClienteBean clienteBean;
	
	
	@PersistenceContext(unitName=Constantes.JNDI.Persist.VENDA)
	private EntityManager entityManager;
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		Cliente cliente = new Cliente();
		cliente.setNome("charles");
		
		cliente.setAltura(999);
		clienteBean.alterar(cliente);
	}
}

Método ejb:

	public void alterar(Cliente cliente) {
		cliente.setAltura(871);
		cliente.setId(1L);
		entityManager.merge(cliente);
	}

Ao chamar esse método não deveria tomar uma exceção? porque o cliente não está sendo gerenciado.
Criei ele no servlet, alterei no ejb e momento nenhum fiz “coloquei” ele no contexto, porque atualiza sem erro?

vlws.

Um objeto ñ precisa estar attached para sobre um merge.

Imagine que uma pessoa do id = 1 e se você fizer

Pessoa pessoa = new Pessoa(1);

em.merge(pessoa)

Todos os outros dados já persistidos serão apagados.

Verdade Hebert,
Acho que me confundi com a questão de estar gerenciado.
Fiz o teste aqui e rolou bem isso mesmo.

Achei que o merge só deveria funcionar se a entidade já estivesse gerenciada. (através de um find por exemplo).

vlws.

Isso é verdade na hora do delete. [=

Verdade, nesse caso recebemos a

java.lang.IllegalArgumentException: Removing a detached instance