Будьте в спящем режиме - Пакетное обновление возвратило неожиданное количество строки из обновления: 0 фактических количеств строки: 0 ожидаемых: 1

  • Начиная с RxJS v6 и выше, поддержка вызовов операторов непосредственно на Observable не рекомендуется. Вместо этого используйте Observable.pipe.
  • Начиная с RxJS v6 и выше, поддержка операторов прямого импорта устарела. Вместо этого импортируйте из rxjs/operators.
  • HttpClient (из @angular/common/http) по умолчанию отображает ответы как JSON. Нет необходимости в операторе map (это первое поведение для Http (из @angular/http)).

Ниже приведен исправленный пример:

import { /* imports go here */ } from '@angular/common/http';
// ...

// ...
export class AuthService {
  // ...

  registerUser(user){
    let headers = new HttpHeaders();
    headers.append('content-type','application/json');

    return this.http.post('http://localhost:8080/users/register',user,{headers:headers})
          .catch(this.errorHandler);

  }
}
127
задан Draken 11 September 2017 в 08:23
поделиться

2 ответа

Без кода и связок для ваших транзакций исследовать проблему будет практически невозможно.

Однако, чтобы лучше понять, что вызывает проблему, попробуйте сделать следующее:

  • В конфигурации hibernate установите hibernate.show_sql в true. Это должно показать вам SQL, который выполняется и вызывает проблему.
  • Установите уровни журнала для Spring и Hibernate на DEBUG, это снова даст вам лучшее представление о том, какая строка вызывает проблему.
  • Создайте модульный тест, который воспроизводит проблему без настройки менеджера транзакций в Spring. Это даст вам лучшее представление о том, какая строка кода вызывает проблему.

Надеюсь, это поможет.

54
ответ дан 24 November 2019 в 00:45
поделиться

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

я использовал session.evict (); для удаления кэша, сохраненного в, в спящем режиме сначала или если Вы не хотите брать на себя риск выпуска данных, лучше Вы делаете другой объект для хранения временного файла данных.

     try
    {
        if(!session.isOpen())
        {
            session=EmployeyDao.getSessionFactory().openSession();
        }
            tx=session.beginTransaction();

        session.evict(e);
        session.saveOrUpdate(e);
        tx.commit();;
        EmployeyDao.shutDown(session);
    }
    catch(HibernateException exc)
    {
        exc.printStackTrace();
        tx.rollback();
    }
0
ответ дан 24 November 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: