Получение ошибки с помощью тестового метода save() при тестировании репозитория CRUDJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получение ошибки с помощью тестового метода save() при тестировании репозитория CRUD

Сообщение Anonymous »

Я пытаюсь написать несколько тестов для своего репозитория. При тестировании метода «сохранить» я получаю ошибку
org.springframework.orm.ObjectOptimisticLockingFailureException: строка была обновлена ​​или удалена другой транзакцией (или сопоставление несохраненных значений было неверным): [ru.clevertec.newsonline.entity.News# 7289c37a-8bfa-4092-872b-f1e4a8c319c6]
Другие методы проходят успешно тесты.
Почему я это получил?

Код: Выделить всё

[Hibernate]
select
n1_0.news_id,
n1_0.author_id,
n1_0.category_id,
n1_0.content_link,
n1_0.date_of_news,
n1_0.header_news,
n1_0.is_published,
n1_0.short_description,
c2_0.news_id,
c2_0.comment_id,
c2_0.user_id,
c2_0.date_of_comment,
c2_0.text_comment
from
news_online.news n1_0
left join
news_online.comment c2_0
on n1_0.news_id=c2_0.news_id
where
n1_0.news_id=?
[Hibernate]
select
n1_0.news_id,
n1_0.author_id,
n1_0.category_id,
n1_0.content_link,
n1_0.date_of_news,
n1_0.header_news,
n1_0.is_published,
n1_0.short_description
from
news_online.news n1_0
where
n1_0.news_id=?

org.springframework.orm.ObjectOptimisticLockingFailureException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [ru.clevertec.newsonline.entity.News#7289c37a-8bfa-4092-872b-f1e4a8c319c6]

Код: Выделить всё

@Repository
public interface NewsRepository extends JpaRepository, IRepository, IFilterEntityRepository {

}

Код: Выделить всё

public interface IRepository {

List findAll();

Page findAll(Pageable pageable);

Optional findById(UUID id);

E save(E e);

void delete(E e);

}

Код: Выделить всё

@DataJpaTest
@ActiveProfiles("test")
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class NewsRepositoryIT {
@Test
public void shouldSaveNews() {
//given
News newNews = NewsTestBuilder.builder().build().buildNewsForSave();
//when
newsRepository.save(newNews);
//then
assertEquals(21, newsRepository.findAll().size());
assertTrue(((CrudRepository) newsRepository).findById(newNews.getNewsId()).isPresent());
}
Я тоже пытаюсь поместить аннотацию @commit над тестовым методом. Я ожидал, что должен быть передан тестовый метод save(). Но мне это не помогло.

Подробнее здесь: https://stackoverflow.com/questions/793 ... repository
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»