Remove Dinâmico JPA - Resolvido

Esse seu objeto é a classe certo? Ele está indo sem ID? O.o Quando você faz o cast, faz um debug aí e veja se seu objeto está com ID.

Acho que tem sim, porque é o mesmo que vai para o insert e para o update e eles funcionam. De qualquer forma, vou fazer isso ! Vou fazer um debug pra ver o que tá pegando. Mas acho que é algo do próprio TopLink.
Se isso der certo, vou ter um gerador de formularios padrão. Insert, Delete, Update e a busca de forma automatica. Vai facilitar demais a minha vida rs.

Valew, muito obrigado pela ajuda.

Realmente tá muito estranho.

Tenta fazer um find e depois remove o objeto que vc encontrou:

AsUsuario asUsuario = (AsUsuario) obj; asUsuario = em.find(AsUsuario.class, asUsuario.getId()); // Não sei se é essa a ordem correta dos parametros. em.remove(asUsuario);

Sua app tá levantando sem erro?

Opa,

Aí sim hein ! Mas neste caso, eu passei o ID.
Quando eu tenho um Object apenas, eu não consigo fazer o get no ID.

Conclusão. Se eu passo o ID blz, se eu tiro o find com o ID , dá zica.

Como você esta utilizando conexão manual, talvez seja um requisito que o objeto tenha que estar attached através do find.

Se funcionou coloca um Resolvido aí e como ficou o código para ajudar os outros. [=

Sim,

Funcionou, no primeiro post eu colei o código já funcionando desta forma. Acontece que eu gostaria de não precisar do ID. Essa é a questão e o motivo pelo qual eu abri o post.
Valew

Mas você precisa. Sem ele, o JPA não iria saber quem é o fulano.

Coloca um resolvido aí para ajudar outros.

Coloquei o resolvido… mas não tô satisfeito. Vou dar uma pesquisada e logo coloco as novidades.
Obrigado a todos.

Trabalhei com um projeto que usava dessa maneira. acho que pode te ajudar

public class DAO<T> {

	private final Class<T> classe;
	
	public DAO(Class<T> classe) {
		this.classe = classe;
	}

	public void remove(T t) {

		EntityManager em = new JPAUtil().getEntityManagerOracle1();
		
		em.getTransaction().begin();
		em.remove(em.merge(t));
		em.getTransaction().commit();
		em.close();
	}
1 curtida