Boa noite… Esta classe é abstrata e por iso nao posso instanciar a mesma. Porem eu tenho uma classe clientejpaController e eu preciso de uma isntancia desse UserTransaction pra me poder adicionar no banco de dados.
Olha o contrutor da classe clietnejpaController:
public ClientesJpaController(UserTransaction utx, EntityManagerFactory emf) {
this.utx = utx;
this.emf = emf;
}
eu to fazendo isso:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("WebApplication2PU");
EntityManager em = emf.createEntityManager();
Clientes c = new Clientes();
c.setNomeCliente("Getulio Vargas");
c.setEnderecoCliente("Rua tal, 25");
ClientesJpaController cj = new ClientesJpaController(utx, emf);
cj.create(c);
Agora eu preciso de uma instancia UserTransaction pra poder usar o metodo create da classe (cliente) de controle
quem for chamar o metodo… deve passar uma isntancia concreta…isso eu sabia… Eu nao to conseguindo é passar uma instancia concreta… da esse erro:
type Exception report
messageInternal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.NotNull: @javax.validation.constraints.NotNull(message={javax.validation.constraints.NotNull.message}, groups=[], payload=[]
Você não vai instanciar dessa forma pois você não sabe qual é a classe concreta que implementa a UserTransaction.
Quem sabe instanciar essa classe é a implementação do JTA.
Então você não vai usar a instrução new,
ou você anota sua variável com o @Resource, conforme o colega @Mike já explicou,
ou você pode tentar fazer um lookup pelo JNDI name "java:comp/UserTransaction".
.
Sei que já faz um bom tempo que responderam este tópico, mas eu fiz um tópico sobre como utilizar o controle explícito de transações JTA por BMT (Bean Managed Transactions), utiliza o objeto UserTransacition. Segue o link: http://www.tidicas.com.br/?p=319