Я иногда использую аннотацию @ Transactional в моих тестах JUnit.Я использую @Transactional в JUnit для отложенной выборки коллекций.
В настоящее время я столкнулся с неизвестным для меня поведением аннотации @ Transactional .
В моей базе данных есть одна Car сущность.Я удаляю эту сущность в моем тесте.Если я использую @ Transactional в моем тесте, то эта сущность НЕ удаляется из базы данных.В противном случае, если я не использую @Transactional, то сущность удаляется.Я вижу это после каждого теста в моей базе данных.
У меня есть стандартная сущность и репозиторий.Моя сущность:
@Entity
public class Car {
@Id
@GeneratedValue
private int id;
private String model;
//...constructors, getters and setters }
Мой репозиторий:
public interface CarRepository extends JpaRepository<Car, Integer>{
List<Car> findByModel(String mazda);
}
Мой тест:
@RunWith(SpringRunner.class)
@SpringBootTest
public class RelationsTest {
@Autowired
CarRepository carRepository;
@Test
//@Transactional
public void deleteCar() throws Exception {
List<Car> cars = carRepository.findByModel("Mazda");
assertThat(cars).hasSize(1);
carRepository.deleteById(cars.get(0).getId());
}
Что является причиной того, что с @ Transactional объект не удален из базы данных?