Comecei a estudar EJB3 agora, consegui incluir, alterar e consultar os objetos, mas na exclusão estou tomando o erro abaixo
java.lang.IllegalArgumentException: Removing a detached instance com.cliente.ejb.objeto.Cliente#1
@Entity
public class Cliente implements Serializable
{
@Id @GeneratedValue
private int clienteId;
private String nome;
...
}
@Remote
public interface ClienteInterface
{
public void excluir( Cliente cliente );
}
@Stateless
public class ClienteCadastrar implements ClienteInterface
{
@PersistenceContext
EntityManager entitymanager;
public void excluir(Cliente cliente) {
entitymanager.remove(cliente);
}
}
tenho uma classe com o método main que executa o código abaixo
public static void main(String[] args)
{
Hashtable prop = new Hashtable();
prop.put(InitialContext.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
prop.put(InitialContext.PROVIDER_URL, "jnp://localhost:1099");
Context ctx;
try {
ctx = new InitialContext(prop);
ClienteInterface cad = (ClienteInterface) ctx.lookup("ClienteCadastrar/remote");
Cliente c2 = new Cliente();
c2.setId(1);
cad.excluir(c2);
} catch (NamingException e) {
e.printStackTrace();
}
}
alguém sabe dizer o que estou fazendo de errado?
cheguei a achar que eu precisaria consultar o objeto antes de excluir, mas o erro continuava o mesmo
Cliente c2 = new Cliente();
c2.setId(1);
c2 = cad.consultar(c2); // aqui ele retorna o objeto preenchido corretamente do banco
cad.excluir(c2);
outra coisa que tentei foi colocar o ClienteCadastrar como Statefull mas o erro foi o mesmo também
[]s