У меня есть приложение Spring Boot, в котором сущность JPA A имеет отношение к сущности B, включенной в запутанный jar.
Я получаю общее "@OneToOne или @ManyToOne в ссылках Aнеизвестная сущность: ошибка "B" при инициализации Hibernate.
Ошибка строго возникает, когда я запутываю банку с помощью Proguard.
В моей конфигурации Proguard я уже использую это для сохранения всей персистентностианнотированные классы и аннотации времени выполнения:
-keepattributes RuntimeVisibleAnnotations
-keep @javax.persistence.* class * {
*;
}
Если я декомпилирую код, я вижу, что аннотации JPA есть, но объект все еще не найден.
Я также попытался сохранитьвся сущность с этим:
-keep class B
Но ошибка сохраняется.Я не знаю, что еще изменяет Proguard в банке, что мешает Hibernate найти сущность.
Кстати, в Spring Boot я использую @EntityScan с явным именем пакета.
ОБНОВЛЕНИЕ С РЕШЕНИЕМ
Решение было добавить:
-keepdirectories
Записи каталога по умолчанию удаляются в процессе запутывания, чтобы уменьшить размер выходного фляги,Без каталогов Spring Boot не смог найти объекты, настроенные с помощью сканирования пути.
Похожая проблема была получена здесь: ProGuard: не работает запутанный файл jar, но работает не запутанный файл jar