У меня есть проект JDK11, созданный Maven, полностью использующий JPMS, представленный в Java 9.
Я хотел бы написать интеграционные тесты, в которых я использую встроенную базу данных H2. Мой провайдер JPA - Hibernate 5.4.9.
Поскольку база данных H2 используется только во время тестирования, я сначала попытался поместить persistence.xml
в папку ресурсов тестирования.
Проблема в том, что что Hibernate ищет сущности только в папке test-classes
и полностью игнорирует основные классы, в которых находятся мои сущности. Так что мой тест не пройден, потому что он не находит сущности, которые я пытаюсь использовать.
Если я скопирую объявление единицы сохраняемости в папку основных ресурсов, все работает правильно, однако мне бы не понравилось чтобы иметь его там, потому что Hibernate - только тестовая зависимость, и я не хотел бы использовать несуществующие классы.
Почему эта проблема внезапно возникает? Я никогда не сталкивался с этой проблемой раньше (в основном с Java 8 и Hibernate 5.3).
Могу ли я обнаружить мои объекты, не копируя persistence.xml
в мои основные ресурсы? Я также не хотел бы перечислять свои сущности вручную.