JPA Atributos de Transação

Pessoal boa noite,

Tenho 2 métodos:

[code]@TransactionAttribute(TransactionAttributeType.REQUIRED)
public boolean alter() {
Person person = load(1L);
person.setName(“Gilso”);
alter2(person);
return true;
}

@TransactionAttribute(TransactionAttributeType.NEVER)
public boolean alter2(Person person){
    person.setLastName("Carlos");
    return true;
}[/code]

isso não geraria uma EJBException? Aqui esta rodando normal…

EDIT…

Mudei para outro Bean

[code]@TransactionAttribute(TransactionAttributeType.REQUIRED)
public boolean alter() {
Person person = load(1L);
person.setName(“ZZZZZZZZZZZZ”);
transactionBean.alter2(person);
return true;
}

@Stateless
public class TransactionBeanImpl implements TransactionBean {

@PersistenceContext
private EntityManager entityManager;

@TransactionAttribute(TransactionAttributeType.NEVER)
public boolean alter2(Person person){
    entityManager.merge(person);
    person.setLastName("XXXXXXX");
    return true;
}

}[/code]

Agora me gerou uma Exception

Por que em métodos de beans diferente da erro e no mesmo bean não? T_T era pra dar do mesmo jeito.

Olha, entre chamadas de métodos dentro do mesmo EJB você não tem mudança no tipo da transaction.

Se na sua primeira situação o método “alter()” foi chamado pelo client, o tipo de transação q irá vigorar será o REQUIRED, mesmo você fazendo a chamada ao “alter2()” posteriormete. Caso o serviço de outro EJB seja consumido (como no segundo caso), aí sim será verificado novamente o tipo da transaction e vc receberá o exception.

Valeu Rodolfo.

Obrigado. :smiley: