Есть класс для теста для сохранения некоторых ограничений, есть метод 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;
С чем может быть связана эта ошибка, что данных нет в репозитории?
Попробуйте использовать возвращенные объекты из метода сохранения вместо создания новых
Feature f = featureRepository.save(new Feature(1);
Entity e = entityRepository.save(new Entity(1));