Среда: Java EE7, JPA (EclipseLink), JTA, Glassfish 4.1.1
Я хочу отменить создание нескольких сущностей.
Мои коды по существу следующие:
TestBean.java
@Named
@RequestScoped
public class TestBean implements Serializable {
@Inject
private TestService service;
private String value1, value2, value3;
public String saveThreeEntities(){
service.createThreeEntities(value1, value2, value3);
}
}
TestService.java
@ApplicationScoped
public class TestService {
@PersistenceContext
EntityManager em;
@Transactional
public void createThreeEntities(String value1, String value2, String value3) {
TestEntity entity1 = new TestEntity();
entity1.setValue(value1);
TestEntity entity2 = new TestEntity();
entity2.setValue(value2);
TestEntity entity3 = new TestEntity();
entity3.setValue(value3);
em.persist(entity1);
em.persist(entity2);
em.persist(entity3);
}
}
Я надеюсь, что JPA выполнит откат всех трех объектов, если ему не удастся сохранить только entity3 из-за нарушения уникальности имени, например. Но JPA сохраняет объект 1 и объект 2 и, к сожалению, не сохраняет объект 3.
Я пробовал много подходов, но мои коды не работают так, как я ожидаю.
Как откатить серию операторов persist в JPA?< /а>
Как откатить транзакцию в JPA?
Как откатить серию операторов persist в JPA?< /а>
Мне нужна помощь.
@Singleton
вместо@ApplicationScoped
и@TransactionalAttribute
вместо@Transactional
- person Henrique Fernandes Cipriano   schedule 13.04.2018