Транзакция подтверждена, в то время как данные, присутствующие в данных списка объектов (добавлены дополнительно), не сохраняются - PullRequest
0 голосов
/ 17 октября 2019

У нас есть метод maker, который впоследствии вызывает автора метода, и он выполняется в той же транзакции, в то время как в авторе List обновляется с некоторыми дополнительными данными, и этот список становится постоянным / обновляется на основе критериев обновления / вставки,это также в той же транзакции. Но проблема в том, что сущность 'XYZ', созданная во время авторизации автора, в то время как данные Списка не зафиксированы, поэтому произошла потеря данных Списка.

Мы проверили критерии генерации последовательности, а также проверили уровень распространения транзакции, который имеет Требуемое распространение везде.

class ABC {

@Transactional(propagation = Propagation.REQUIRED)

function performMakerAuthor() {
     maker() ;
     author();
}
}

class checker  {

@Transactional(propagation = Propagation.REQUIRED)
function maker() {

//do somthing
}

@Transactional(propagation = Propagation.REQUIRED)

function author {
    object xyz = new object() ; //created new object
    persist(xyz);
    List<Person> list = {p1,p2,p3,p4};  //  already present in database
    list.add(p5) // added additionally
    saveOrUpdate(list);
}
}

class persistOrUpdateDao {

@Transactional(propagation = Propagation.REQUIRED)
function saveOrUpdate(List<Installment> list) {

for(Installment inst : list) {
      if(inst.getId() == null)
             em.persist(inst);
      else
            em.update(inst); 
}
}

@Transactional(propagation = Propagation.REQUIRED)
function persist(object obj) {
  em.persist(obj);
}
}

Вся транзакция должна быть откатана, если список не будет сохранен, хотя этого не произошло, объект, созданный в той же транзакции, будет зафиксирован,Это действительно странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...