Я использую Hibernate Envers для аудита изменений сущностей, и в нашем проекте есть много проверенных сущностей Hibernate.Поэтому я хочу написать тест, который для каждой сущности сделал следующее: 1) создает пример объекта с учетом его класса.2) сохраняет этот объект в базе данных, используя менеджер объектов3) проверяет, создана ли соответствующая запись аудита или нет.
Основная проблема с первым шагом, и я ищу идеи о том, как она может быть реализована в общем виде?
Я пыталсязаполнить основные поля, используя отражение, но некоторые объекты не могут быть сохранены из-за различных ошибок гибернации - например, внешний ключ не существует, или не пустое поле не заполнено, или ID должен быть предопределен и т. д.
Поэтому я хотел бы получить что-то подобное
for (aClass in auditedClasses) {
val example = createFilledEntityGivenItsClass(aClass)
entityManager.persist(example)
val pk = entityManager.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(entity) // extracting primary key from entity.
classToPKMap.put(aClass, pk)
}
....
// using Envers to search for audit records.
....
Так что самое сложное - реализовать этот метод createFilledEntityGivenItsClass
.
Вариант использования: Некоторые разработчики добавилиновый тип сущности, помеченный как @Audited
и ожидает, что все работает.Он хотел использовать свою функцию, но тест не прошел и сказал ему: «Ваша сущность на самом деле не проверена по какой-то причине. Пожалуйста, изучите проблему»
Есть идеи?Совет?