Java SpringBootTest EntityNotFoundException в методе установки

Есть класс для теста для сохранения некоторых ограничений, есть метод setup с аннотацией @Before, в котором тестовые данные сохраняются в БД:

.. И при запуске теста в этом методе возникает ошибка EntityNotFoundException при сохранении Entity в репозиторий:

    
    . . .

    @Autowired
    EntityFeatureConfigRepository entityFeatureConfigRepository;

    @Autowired
    FeatureRepository featureRepository;

    @Autowired
    EntityRepository entityRepository;

    @Before
    public void setup() {
        entityRepository.deleteAll();
        featureRepository.deleteAll();
        entityFeatureConfigRepository.deleteAll();
        
        featureRepository.save(new Feature(1);                    <==== 1L - id 
        entityRepository.save(new Entity(1));
        entityFeatureConfigRepository.save(new EntityFeatureConfig( <=EXCEPTION
                new Feature(1),          
                new Entity(1),
                true));
    }
    . . .

Unable to find Entity with id 1; nested exception is javax.persistence.EntityNotFoundException: Unable to find Entity with id 1

Ошибка в том, что Entity не существует, хотя он сохраняется в методе setup

Если в классе есть такие поля EntityFeatureConfig, возможно, проблема в них.

    @Id
    @ManyToOne
    @ToString.Exclude
    @JsonIgnore
    @JoinColumn(name = "feature_id", referencedColumnName = "id")
    private Feature feature;

    @Id
    @ManyToOne
    @ToString.Exclude
    @JoinColumn(name = "entity_id", referencedColumnName = "id")
    private Entity entity;

И Entity

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "entity")
    @EqualsAndHashCode.Exclude
    @JsonIgnore
    private Set<UserManagingEntity> user;

С чем может быть связана эта ошибка, что данных нет в репозитории?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте использовать возвращенные объекты из метода сохранения вместо создания новых

Feature f = featureRepository.save(new Feature(1);                 
Entity e = entityRepository.save(new Entity(1));

Другие вопросы по теме